我对命令感到困惑-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
命令(和 shell 重定向)感到困惑,而不是对命令(和 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