명령어로 검색한 파일을 find
현재 디렉터리에 복사하고 싶어요
# find linux books
find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 echo
# the result
../Books/LinuxCollection/Linux_TLCL-17.10.pdf ../Richard Blum, Christine Bresnahan - Linux Command Line and Shell Scripting Bible, 3rd Edition - 2015.pdf ..
"cp" 명령을 사용하여 현재 디렉터리에 파일 복사를 테스트합니다.
find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 cp .
오류 발생:
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
명령 대체를 통해 문제를 해결했습니다.
cp $(find ~ -type f -iregex '.*linux.*\.pdf' -print0) .
그것을 구현하는 방법 xargs
?
답변1
cp
오류에서 알 수 있듯이 대상 디렉터리는 마지막 디렉터리여야 합니다 . 해당 옵션 에 cp
해당하는 GNU가 없는 것 같으므로 xargs를 사용하여 과 사이에 파일 이름을 삽입 해야 합니다 .cp
-t
cp
.
find ... | xargs -0 -I _ cp _ .
where는 -I
입력으로 대체될 문자열을 알려주는 데 사용됩니다(이 경우에는 it을 사용 _
하지만 {}
일반적으로 사용됩니다).
물론 이것은 스스로 할 수 있습니다 find
:
find ~ -type f -iregex '.*linux.*\.pdf' -exec cp {} . \;