임의의 파일을 디렉토리에 복사하는 방법

임의의 파일을 디렉토리에 복사하는 방법

우선, 이것은 숙제가 아닙니다. 나는 이 작업을 수행하기 위해 많은 매뉴얼을 뒤지고 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/1du

관련 정보