-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

おすすめ記事