コマンドが混乱します-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