find -exec 命令后面的\;和+

一个-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'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容