2010-05-24 3 views
0

파일 크기가 256MB입니다. 이 파일에서 임의의 양의 데이터를 검색하여 다른 파일에 복사하고 싶습니다.bash를 사용하여 파일에서 임의의 바이트 수를 구합니까?

bash 또는 다른 방법으로이를 수행 할 수있는 방법이 있습니까?

편집 : 1에서 256 사이의 임의의 숫자를 선택한 다음 해당 파일의 mb 수를 다른 파일로 복사하십시오. 처음부터 시작

+0

"무작위"란 무엇을 말합니까? 난수 생성 방법을 묻고 있습니까? 아니면 "임의"라는 뜻입니까? – Cascabel

+0

이 숙제가 있습니까? 이 작업을 수행 할 실제 이유가 많지 않습니다 ... – Cascabel

+0

숙제? 하하 싫어. 98 년에 대학을 마쳤습니다. – GeoffreyF67

답변

1

당신의 OS는/dev에/urandom가있는 경우, 다음 난수를 따기 쉽습니다 :

RANDNUM=`dd if=/dev/urandom bs=1 count=1 | od -t u1 | cut -f4- -d ' ' | head -1 | sed 's/ //g'` 

당신은 임의의 숫자를 일단 ,

dd if=input_file of=output_file bs=${RANDNUM}m count=1 
+1

Bash는 내장 RANDOM 변수를 가지고 있습니다. –

+0

@ Jürgen : 알아두면 좋을 것. 나는 지금까지 내가 아는 tcsh를 사용하지 않는다. – nsayer

1
cat somefile|head -c `head -c 3 /dev/random |hexdump -d|cut -f4 -d ' '|head -n1` 
3

이 사본 :

# (random) blocks of one byte 
dd of=output_file if=input_file ibs=1 count=$((($RANDOM % 256) + 1)M 

# one block of (random) bytes 
dd of=output_file if=input_file ibs=$((($RANDOM % 256) + 1)M count=1 

당신이 원하는 경우, 다른 곳에서 시작하도록 skip= 옵션을 사용합니다.

(내 나쁜, 블록 크기를 지정하는 것을 잊었다.)

+0

이것은 입력 파일의 전체 내용을 복사합니다. – GeoffreyF67

+0

'$ RANDOM'은 0-32767 범위의 의사 난수를 포함하는 Bash의 내장 자동 변수입니다. –

관련 문제