예를 들어 100개의 폴더가 있고 각 폴더에는 JPG 및 MOV 파일이 있습니다. 모든 jpg 파일을 한 폴더에 복사하고 모든 mov 파일을 다른 폴더에 복사하고 싶습니다.
예
folder1
있어요one.jpg
헤헤two.jpg
one.mov
folder2
거기two2.jpg
와 two2.movfolder3
있고xxx.jpg
yyy.mov
원하는 결과
폴더
jpgfiles
에 다음이 포함되어 있습니다.one.jpg
two.jpg
two2.jpg
xxx.jpg
폴더
movfiles
에 다음이 포함되어 있습니다.one.mov
two2.mov
yyy.mov
답변1
이를 위해 조회를 사용할 수 있습니다. 폴더 1, 폴더 2 등 위의 폴더를 사용하고 거기에서 이러한 명령을 실행합니다.
find /folder/ -type f -name "*.jpg" -exec cp {} "jpgfiles/" +
find /folder/ -type f -name "*.mov" -exec cp {} "movfiles/" +
/folder/
다음은 상위 폴더입니다. 상위 폴더로 수정해야 합니다.
편집: 이 점을 지적해 주신 @godlygeek에게 감사드립니다. 고유한 파일만 복사하려면 다음 명령을 사용할 수 있습니다.
find /folder/ -type f -name "*.jpg" -exec bash -c 'test ! -f jpgfiles/${0##*/} && { cp $0 jpgfiles/${0##*/}; }' {} +
find /folder/ -type f -name "*.mov" -exec bash -c 'test ! -f movfiles/${0##*/} && { cp $0 movfiles/${0##*/}; }' {} +
고유한 파일 접미사가 있는 충돌하는 파일을 복사하려면 다음을 수행하십시오.
find /folder/ -type f -name "*.jpg" -exec bash -c 'test -f jpgfiles/${0##*/} && { cp $0 jpgfiles/${0##*/}.$RANDOM; }' {} +
find /folder/ -type f -name "*.mov" -exec bash -c 'test -f movfiles/${0##*/} && { cp $0 movfiles/${0##*/}.$RANDOM; }' {} +