Linux

-exec 實際上是如何工作的

  • June 29, 2013

我對-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

引用自:https://unix.stackexchange.com/questions/81171