cp는 찾기 작업에서 디렉터리 이름을 올바르게 평가하지 않습니다.

cp는 찾기 작업에서 디렉터리 이름을 올바르게 평가하지 않습니다.

특정 파일 이름을 가진 파일을 찾고 해당 파일 위치에 파일을 복사한 다음 찾은 파일을 삭제하는 스크립트를 만들려고 합니다.

지금은 삭제 부분을 무시하고 현재까지 가지고 있는 내용은 다음과 같습니다.

find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" `dirname {}` \;

불행히도, 찾은 파일의 인스턴스에 대해 "."을 반환하므로 디렉터리 이름을 올바르게 평가할 수 없는 것 같습니다.

답변1

find다음 조치가 -execdir더 적절해 보입니다.

find /path/to/searchdir -name file.rtf -execdir cp -v /path/to/filetocopy.rtf . \;

cp이 작업은 이라는 파일이 포함된 모든 디렉터리에서 실행되므로 file.rtf실행할 때마다 해당 디렉터리를 .볼 수 있습니다.cpcp

-delete그런 다음 파일을 추가하거나 제거할 수 있습니다 (모든 것이 정상인지 확인한 후).

귀하의 방법이 작동하지 않는 이유는 쉘이 dirname {}실행되기 전에 평가 find하고 dirname {}출력하기 때문입니다 .. 그래서

find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" `dirname {}` \;

~이 되다

find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" . \;

관련 정보