500개 파일마다 새 디렉터리로 이동 [닫기]

500개 파일마다 새 디렉터리로 이동 [닫기]

10,665개의 JPEG 파일이 포함된 디렉터리가 있습니다.

500개의 파일을 새 디렉터리로 이동하고, 500개의 파일을 다음 디렉터리로 이동하고 싶습니다.

가장 큰 파일을 먼저 이동해야 합니다. 500-1에는 500개의 가장 큰 파일이 포함되고, 500-2에는 그 다음으로 큰 500개의 파일이 포함되는 식입니다.

이렇게 하려는 이유는 JPEG를 누군가에게 제공하고 싶은데 한 디렉터리에 JPEG가 너무 많아서 파일 관리자가 중단되기 때문입니다.

답변1

Linux 기반 시스템이나 GNU를 사용하는 기타 시스템에서는 find다음과 같은 루프를 사용할 수 있습니다.

find -maxdepth 1 -type f -printf '%s\t%P\0' |
    sort -z -rn |
    (
        # x is max files per directory; d is directory number; k is file counter
        x=500 d=1 k=1
        while IFS=$'\t' read -r -d '' size path
        do
            printf "%d\t%d\t%s\n" $k $d "$path"    # File nr, Directory nr, Filename
            echo "##" mkdir -p "/path/to/dir-$d"
            echo "##" mv -f "$path" "/path/to/dir-$d/${path##*/}"

            [[ $((k++)) -ge $x ]] && { k=1; ((d++)); }    # Next directory
        done
    )

echo '##'당신이 원하는 것을 그들이 할 것이라고 확신하면 루프에서 두 개의 액션 라인을 제거하십시오. printf진행 상황에 대한 상태 보고서를 원하지 않으면 이를 주석 처리하세요.

관련 정보