임의의 내용으로 많은 파일 만들기


23

최소 1KB의 임의 데이터를 포함하는 여러 (수천 개의) 파일을 만드는 명령을 찾고 있습니다.

예를 들어

Name            size
file1.01        2K
file2.02        3K
file3.03        5K
etc.

이처럼 많은 파일을 어떻게 만들 수 있습니까?


"독점적"은 무슨 뜻입니까? 문맥 상 의미가 없으므로 잘못된 단어를 사용했을 것입니다.
Gilles 'SO- 악마 그만해

나는 파일이 같은 내용을 가질 수 없다는 것을 의미했다.
João José

따라서 배타적이라는 것은 고유 한 의미 일 것입니다.
somehume

답변:


25

다른 요구 사항이 없으므로 다음과 같이 작동합니다.

#! /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}).


2
이것은 필요 bash등 다양한 이유로 $((…))하고 $RANDOM. 심지어 $(…)존재하지 않을 수도 있습니다 모든 쉘.
G-Man, 'Reinstate

1
@ G-남자는, 어떤 경우에, 이러한 기능의 아무도에 특정하지 bash않고 그들이에서 유래 않았다 bash ( {1..1000}에서 온다 zsh, for n in...; done및 변수 확장은 Bourne 쉘에서 유래 $(...), $((...))그리고 $RANDOM KSH 와서). POSIX를하지 않는 기능은 {1..1000}, $RANDOM하고 /dev/urandom.
Stéphane Chazelas

1
당신은 할 1..1000을 원하는 경우 일정 폭이 필요 "%04d"로하는 경우, bash또는 zsh할 수 {0001..1000}없음에printf
dave_thompson_085

추가 기능 : 무작위로 이름이 지정된 중첩 하위 디렉토리에 이러한 파일을 분산시키는 방법이 필요합니다.
stu

10

와 변형 seq, xargs, ddshuf:

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 1001 에서 10 까지 일련의 숫자를 인쇄합니다.

xargs -n1 -I%%sh -c 'dd ... % ...'대체하는 각 시퀀스 번호에 대한 명령 을 실행합니다.

dd if=/dev/urandom of=file.% bs=$(shuf ...) count=1024에서 feeded 파일 생성 은 / dev / urandom을 가진 1024 개 의 블록 크기 블록을

shuf -i1-10 -n11 에서 10 사이의 임의의 값


왓이 정확히합니까?
saruftw

1
@ saru95 설명이 추가되었습니다.
FloHimself

임의의 크기로 10 개의 파일이 생성됩니다. "10"을 원하는 파일 수로 변경하십시오.
Nay

2

다음과 같이 할 수 있습니다 :

#!/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

나는 이것을 시도했지만 작동하지 않았다. 매개 변수를 설명 할 수 있습니다. :)
João José

매우 빠른 thx @rahul
BG Bruno

2

이것은 단일 파이프 라인을 사용하고 상당히 빠르지 만 모든 파일의 크기가 동일하다는 제한이 있습니다.

dd if=/dev/urandom bs=1024 count=10240 | split -a 4 -b 1k - file.

설명 : dd를 사용하여 10240 * 1024 바이트의 데이터를 작성하십시오. 이 파일을 각각 1240 개의 10240 개의 개별 파일로 분할하십시오 (이름은 'file.aaaa'에서 'file.zzzz'까지 실행 됨)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.