find与exec命令组合详解
find命令结合exec可以实现强大的文件批量处理功能。掌握这组合是Shell编程的基本技能。
基本语法
find和exec命令组合使用有两种基本语法形式:
或者:
语法要点:
[command]是对find命令结果要执行的操作{}是占位符,代表find命令的每个搜索结果\;表示每找到一个文件就执行一次命令,需要转义;避免shell提前解释+表示将所有结果作为参数一次性传递给命令,提高执行效率
常用组合示例
文件复制
将当前目录下所有HTML文件复制到指定目录:
批量更改文件扩展名
将所有txt文件重命名为js文件:
这里使用sh -c是因为需要用到shell的字符串替换功能${1%.txt},它会去除文件名中的.txt后缀。
删除大文件
删除桌面上大于100MB的文件:
高级用法提示
- 添加
-print参数可以在执行前先显示匹配的文件 - 使用
-ok代替-exec会在每次执行操作前请求用户确认 - 搭配
xargs可以进一步控制并行执行和参数传递方式
删除文件时建议先用-exec echo或-print预览将被操作的文件,以防错误删除重要数据。