-exec가 실제로 작동하는 방식

-exec가 실제로 작동하는 방식

명령이 헷갈립니다 -exec. 예를 들어 이 경우:

find . -type f -name "*.c" -exec cat {} \;>all_c_files.txt

받은 것 같아요cat file1 file2 file3 ... fileN

이 경우:

find . -type f -name "*.txt" -exec cp {} OLD \;

나는 얻다:

`cp file1 OLD`  
`cp file2 OLD`  
`cp file3 OLD`  
...  
`cp fileN OLD`  

다음과 같은 유사한 상황:

find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \;

할 것 같습니다 :

printf "Text file: file1"  
printf "Text file: file2"  
printf "Text file: file3"  
...  
printf "Text file: fileN"  

그럼 어떻게 exec작동하나요? 내 말은, 이 예에서는 다르게 동작한다는 것입니다. 맞나요?

답변1

나는 당신 cat이 명령(및 쉘 리디렉션)보다는 명령(및 쉘 리디렉션)에 대해 혼동하고 있다고 생각합니다 find.

find . -type f -name "*.c" -exec cat {} \; > all_c_files.txt다음과 동일:

(
  cat file1 ;
  cat file2 ;
  cat file3 ;
  ... 
  cat fileN
) > all_c_files.txt

분명히 이전 명령은 다음 명령과 동일한 결과를 갖습니다.

cat file1 file2 file3 ... fileN > all_c_files.txt

관련 정보