답변:
다른 요구 사항이 없으므로 다음과 같이 작동합니다.
#! /bin/bash
for n in {1..1000}; do
dd if=/dev/urandom of=file$( printf %03d "$n" ).bin bs=1 count=$(( RANDOM + 1024 ))
done
( bash
적어도 필요 합니다 {1..1000}
).
bash
등 다양한 이유로 $((…))
하고 $RANDOM
. 심지어 $(…)
존재하지 않을 수도 있습니다 모든 쉘.
bash
않고 그들이에서 유래 않았다 bash
( {1..1000}
에서 온다 zsh
, for n in...; done
및 변수 확장은 Bourne 쉘에서 유래 $(...)
, $((...))
그리고 $RANDOM
KSH 와서). POSIX를하지 않는 기능은 {1..1000}
, $RANDOM
하고 /dev/urandom
.
"%04d"
로하는 경우, bash
또는 zsh
할 수 {0001..1000}
없음에printf
와 변형 seq
, xargs
, dd
과 shuf
:
seq -w 1 10 | xargs -n1 -I% sh -c 'dd if=/dev/urandom of=file.% bs=$(shuf -i1-10 -n1) count=1024'
의견에 따라 요청 된 설명 :
seq -w 1 10
01 에서 10 까지 일련의 숫자를 인쇄합니다.
xargs -n1 -I%
% 를 sh -c 'dd ... % ...'
대체하는 각 시퀀스 번호에 대한 명령 을 실행합니다.
dd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024
에서 feeded 파일 생성 은 / dev / urandom을 가진 1024 개 의 블록 크기 블록을
shuf -i1-10 -n1
1 에서 10 사이의 임의의 값
다음과 같이 할 수 있습니다 :
#!/bin/bash
filecount=0
while [ $filecount -lt 10000 ] ; do
filesize=$RANDOM
filesize=$(($filesize+1024))
base64 /dev/urandom |
head -c "$filesize" > /tmp/file${filecount}.$RANDOM
((filecount++))
done