복사하면 "동일한" 오류가 발생합니다.

복사하면 "동일한" 오류가 발생합니다.
find . -type f -iname "*.jpg" -exec cp {} JPG \;

쉘 스크립트를 작성 중인데 이미지 파일을 새 디렉토리에 복사할 때 오류가 발생합니다.are the same

답변1

JPG디렉터리는 현재 디렉터리에 있습니다. 재귀를 사용하여 현재 디렉토리를 검색하고 있습니다 find. 즉, JPG이름이 일치하는 모든 파일 *.jpg(대소문자 구분 안 함)이 해당 파일 자체에 복사됩니다.

이를 방지하려면 다음을 사용하십시오.

find . -path ./JPG -prune -o -type f -iname '*.jpg' -exec cp {} ./JPG \;

JPG이렇게 하면 디렉터리가 발견될 때마다 검색 트리에서 해당 디렉터리가 제거됩니다(즉, 검색 대상으로 간주되지 않음).


작업 속도를 높이려면 GNU가 있는 경우 cp다음을 사용할 수 있습니다.

find . -path ./JPG -prune -o -type f -iname '*.jpg' -exec cp -t ./JPG {} +

이렇게 하면 cp발견된 각 파일에 대해 한 번이 아닌 일괄적으로 발견된 JPEG 파일이 호출됩니다.

비슷한 효과를 얻으려면 한 번만 호출하십시오 rsync.

rsync -av --exclude=/JPG --include='*.jpg' --include='*/' --exclude='*' ./ ./JPG

( 로 *.jpg변경하지 않는 한 대소문자를 구분하지 않고 일치 하지 않습니다 .)--include='*.jpg'--include='*.[jJ][pP][gG]'

관련 정보