一个-exec只能执行一个命令,而且必须在命令后面加上终结符,终结符有两个:“;”和“+”。
其中“;”会对每一个find到的文件去执行一次cmd命令。而”+“让find到的文件一次性执行完cmd命令。
为什么必须有终结符?
因为一个find后面可以有多个-exec cmd,所以必须要有终结符分割他们。如果不加,会包缺少参数。
[work@jkz ~]$ find . -maxdepth 1 -type f -name "*.log" -exec echo {} \; -exec echo {} +
./server02.log
./server03.log
./server00.log
./server01.log
./timing.log
./server.log
./server02.log ./server03.log ./server00.log ./server01.log ./timing.log ./server.log
为什么要加“\”?
“;”是shell的命令分隔符,如果只有“;”,那么这条命令就会被shell截断。
[work@jkz ~]$ find . -maxdepth 1 -type f -name "*.log" -exec echo {} ;
find: missing argument to `-exec'