내가 알고 싶은 정확히 무엇을 {} \;
하고 {} \+
와| xargs ...
않습니다. 설명과 함께이를 명확히하십시오.
아래 3 개의 명령은 동일한 결과를 실행하고 출력하지만 첫 번째 명령은 약간의 시간이 걸리며 형식도 약간 다릅니다.
find . -type f -exec file {} \;
find . -type f -exec file {} \+
find . -type f | xargs file
첫 번째는 file
명령에서 오는 모든 파일에 대해 명령을 실행하기 때문 find
입니다. 따라서 기본적으로 다음과 같이 실행됩니다.
file file1.txt
file file2.txt
그러나 후자의 2 -exec
명령은 아래와 같은 모든 파일에 대해 파일 명령을 한 번 실행합니다.
file file1.txt file2.txt
그런 다음 첫 번째 명령은 문제없이 실행되지만 두 번째 명령은 오류 메시지를 표시하는 다음 명령을 실행합니다.
find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \+ #gives error:find: missing argument to `-exec'
를 사용하는 명령의 {} \+
경우 오류 메시지가 표시됩니다.
find: missing argument to `-exec'
왜 그런 겁니까? 누구든지 내가 뭘 잘못하고 있는지 설명해 주시겠습니까?