Linux
-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
工作的呢?我的意思是我在這些例子中表現不同是對的嗎?
我想你對
cat
命令(和 shell 重定向)感到困惑,而不是被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