find
및 cp
명령을 동시에 실행하려면 어떻게합니까 ? 나는 이것을 시도했다 :
find -name "*pdf*" | xargs cp $1 ./
하지만 작동하지 않습니다.
사용 -exec
옵션 :
find ./ -name "*pdf*" -exec cp -t . {} \+
는 {}
현재의 파일 이름이 처리되는로 대체된다.
man 페이지에서 find
:
-exec command {} +
... 명령 줄은 선택한 각 파일 이름을 끝에 추가하여 빌드됩니다. 명령 줄은 명령 줄을
xargs
빌드 하는 것과 거의 동일한 방식으로 빌드됩니다.
-t
(대상 디렉토리) 옵션 (GNU 확장) 의 사용에 유의하십시오 . -exec cp {} . +
일치하는 파일 이름이 명령 줄 끝에 추가되는 반면 대상은 마지막에 지정해야하므로을 사용할 수 없습니다 . 또 다른 해결 방법은 다음을 호출하는 것입니다 sh
.
find ./ -name "*pdf*" -exec sh -c 'cp "$@" .' '' {} +
나는 습관적으로 +
캐릭터를 탈출했습니다 . find
셸에 의한 확장으로부터 보호하기 위해 구문 의 특수 문자를 이스케이프해야합니다 . 특히, +
대부분의 셸에서 문자열로 해석하기 때문에 앞에 백 슬래시가 필요 하지 않을 수 있습니다 (다른 것으로 확장되지 않음). 그러나 ;
(명령을 순차적으로 각 파일에 적용하는) 이스케이프 / 인용해야합니다 .
find -name "*pdf*" -exec cp -f {} . ';'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다