최소 1KB의 임의 데이터를 포함하는 여러 (수천 개의) 파일을 만드는 명령을 찾고 있습니다.
예를 들어
Name size
file1.01 2K
file2.02 3K
file3.03 5K
etc.
이처럼 많은 파일을 어떻게 만들 수 있습니까?
답변
다른 요구 사항이 없으므로 다음과 같이 작동합니다.
#! /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}
).
답변
와 변형 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
답변
이것은 단일 파이프 라인을 사용하고 상당히 빠르지 만 모든 파일의 크기가 동일하다는 제한이 있습니다.
dd if=/dev/urandom bs=1024 count=10240 | split -a 4 -b 1k - file.
설명 : dd를 사용하여 10240 * 1024 바이트의 데이터를 작성하십시오. 이 파일을 각각 1240 개의 10240 개의 개별 파일로 분할하십시오 (이름은 ‘file.aaaa’에서 ‘file.zzzz’까지 실행 됨)