隨機生成一個文件怎樣才能充滿在shell腳本隨機數字或字母隨機文件?我也想指定文件的大小。使用shell腳本
回答
使用dd
命令來讀取從/ dev /隨機數據。
dd if=/dev/random of=random.dat bs=1000000 count=5000
這將讀取5000個1MB的隨機數據塊,即整個5千兆字節的隨機數據!
實驗用的塊大小參數,以獲得最佳性能。
隨機變量每次都會給你一個不同的號碼:
echo $RANDOM
head -c 10 /dev/random > rand.txt
變化10至什麼。閱讀「man隨機」以瞭解/ dev/random和/ dev/urandom之間的區別。
或者,只是BASE64字符
head -c 10 /dev/random | base64 | head -c 10 > rand.txt
的基於64可能包括一些字符你不感興趣,但沒有時間去想出一個更好的單襯字符轉換器... (也我們從/ dev /隨機對不起,熵池以字節太多!)
哎呀,錯過了字符和數字部分,我猜你的意思是字母數字字符......需要修改。 – 2010-04-06 18:01:57
拯救熵:在綠色生活中的最新趨勢。 :) – 2010-04-06 18:20:20
一個良好的開端是:
http://linuxgazette.net/153/pfeiffer.html
#!/bin/bash
# Created by Ben Okopnik on Wed Jul 16 18:04:33 EDT 2008
######## User settings ############
MAXDIRS=5
MAXDEPTH=2
MAXFILES=10
MAXSIZE=1000
######## End of user settings ############
# How deep in the file system are we now?
TOP=`pwd|tr -cd '/'|wc -c`
populate() {
cd $1
curdir=$PWD
files=$(($RANDOM*$MAXFILES/32767))
for n in `seq $files`
do
f=`mktemp XXXXXX`
size=$(($RANDOM*$MAXSIZE/32767))
head -c $size /dev/urandom > $f
done
depth=`pwd|tr -cd '/'|wc -c`
if [ $(($depth-$TOP)) -ge $MAXDEPTH ]
then
return
fi
unset dirlist
dirs=$(($RANDOM*$MAXDIRS/32767))
for n in `seq $dirs`
do
d=`mktemp -d XXXXXX`
dirlist="$dirlist${dirlist:+ }$PWD/$d"
done
for dir in $dirlist
do
populate "$dir"
done
}
populate $PWD
另存爲 「script.sh」,如運行SIZE ./script.sh。 printf代碼從http://mywiki.wooledge.org/BashFAQ/071中解除。當然,你可以初始化mychars陣列蠻力,mychars =( 「0」 和 「1」 ...... 「A」 ...... 「Z」, 「A」 ... 「Z」),但不會有什麼樂趣,是嗎?
#!/bin/bash
declare -a mychars
for ((I=0; I<62; I++)); do
if [ $I -lt 10 ]; then
mychars[I]=$I
elif [ $I -lt 36 ]; then
D=$((I+55))
mychars[I]=$(printf \\$(($D/64*100+$D%64/8*10+$D%8)))
else
D=$((I+61))
mychars[I]=$(printf \\$(($D/64*100+$D%64/8*10+$D%8)))
fi
done
for ((I=$1; I>0; I--)); do
echo -n ${mychars[$((RANDOM%62))]}
done
echo
/dev/random&base64方法也很好,而不是通過「tr -d -c [:alnum:]」管道穿過base64,管道,然後你只需要計算出來的好字符,直到你'重做。 – nortally 2011-07-28 16:29:53
大小創建100個隨機命名的50MB的文件中的每個:
for i in `seq 1 100`; do echo $i; dd if=/dev/urandom bs=1024 count=50000 > `echo $RANDOM`; done
最好使用mktemp來創建隨機文件。 for i in seq 1 100; do myfile ='mktemp --tmpdir = .' dd if =/dev/urandom bs = 1024 count = 50000> $ myfile done – 2012-10-11 05:51:44
- 1. 使用shell腳本
- 2. 使用shell腳本
- 3. 使用shell腳本
- 4. 使用shell腳本
- 5. 使用shell腳本
- 6. 使用shell腳本
- 7. 使用shell腳本
- 8. 使用shell腳本
- 9. 使用shell腳本
- 10. 使用shell腳本
- 11. shell腳本Groovy腳本使用GANT
- 12. 如何使用shell腳本
- 13. 使用sed的shell腳本
- 14. 如何使用shell腳本
- 15. 使用shell腳本 - 星號
- 16. 如何使用shell腳本
- 17. 比較使用shell腳本
- 18. 我有使用shell腳本
- 19. 查找使用shell腳本
- 20. 閱讀使用shell腳本
- 21. 批量使用shell腳本
- 22. 如何使用shell腳本
- 23. 如何使用shell腳本
- 24. 使用或shell腳本
- 25. Shell腳本使用DBLINK
- 26. SH - 使用shell腳本
- 27. 搜索使用shell腳本
- 28. include_once使用shell腳本
- 29. 查找 - 使用shell腳本
- 30. 如何使用shell腳本
哪些字符被允許在輸出文件?任何隨機字節或只是ascii字母數字字節? – 2010-04-06 18:23:08