우선, 이것은 숙제가 아닙니다. 나는 이 작업을 수행하기 위해 많은 매뉴얼을 뒤지고 AZ에서 쉘 프로그램을 작성하는 방법을 배우고 싶지 않습니다.
/mnt/hdd/files
파일을 저장하는 하위 폴더가 많은 폴더가 있는데 파일을 무작위로 선택하여 복사하고 싶습니다./mnt/hdd/temp/1
/mnt/hdd/temp/1
폴더가 특정 크기에 도달할 때까지 파일을 선택하고 복사하는 방법이 있나요 ? (예: 5GB 또는 10GB)
평균 파일 크기는 약 10MB이므로 명령(스크립트/배치?)에 파일 수(1000개)를 무작위로 선택하도록 지시하는 것이 좋습니다.
디렉터리 트리에는 중복된 항목이 없으며 파일 형식은 하나만 있습니다.
답변1
한 가지 접근 방식은 파일 이름에 개행 문자가 포함되어 있지 않다고 가정하는 것입니다.
#! /bin/sh
dest=/mnt/hdd/temp/1
cd /mnt/hdd/files
find . -type f | \
shuf -n 1000 | \
while [ $(du -ks "$dest" | awk '{ print $1 }') -lt 10485760 ] && IFS= read -r fn; do
cp "$fn" "$dest"
done
대상 크기가 10GB 미만이고 파일 수가 1000개 이하인 경우 /mnt/hdd/files
임의의 파일을 복사 합니다./mnt/hdd/temp/1
du