马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Linux中xargs下令和-exec下令
我来具体先容一下 xargs 和 -exec 这两个在 Linux 中处置惩罚批量文件操纵的强大下令。
-exec 下令
-exec 是 find 下令的一部门,用于对找到的每个文件实行指定的下令。
根本语法:
- find [路径] [条件] -exec 命令 {} \;
- # 或
- find [路径] [条件] -exec 命令 {} +
复制代码 示例:
- # 查找并删除所有 .tmp 文件
- find . -name "*.tmp" -exec rm {} \;
- # 查找并更改权限
- find /var/log -name "*.log" -exec chmod 644 {} \;
- # 查找文件并统计行数(单文件处理)
- find . -name "*.txt" -exec wc -l {} \;
- # 使用 + 结尾(更高效,一次性传递多个文件)
- find . -name "*.jpg" -exec tar -czf archive.tar.gz {} +
复制代码 参数分析:
- {}:体现找到的文件名
- \;:每个文件实行一次下令
- +:多个文件一次性通报给下令(更高效)
xargs 下令
xargs 从尺度输入读取数据,并将其转换为下令行参数。
根本语法:
示例:
- # 删除所有 .tmp 文件
- find . -name "*.tmp" | xargs rm
- # 统计所有 .txt 文件的行数
- find . -name "*.txt" | xargs wc -l
- # 处理带空格的文件名
- find . -name "*.md" -print0 | xargs -0 grep "TODO"
- # 限制每次传递的参数数量
- ls *.log | xargs -n 2 diff # 每次比较两个文件
复制代码 常用选项:
- -n 数字 # 每次传递的参数个数
- -I {} # 指定替换字符串
- -P 数字 # 并行执行
- -0 # 处理空字符分隔的输入(配合 find -print0)
复制代码 两者对比
特性-execxargs泉源find 下令的一部门独立下令服从\; 低效,+ 高效默认高效机动性只能共同 find 利用可与任何下令共同文件名处置惩罚主动处置惩罚特别字符须要 -0 选项处置惩罚特别字符并行处置惩罚不支持支持 (-P 选项)参数控制有限机动 (-n, -I 等)实用本领
1. 处置惩罚特别字符(空格、换行等)
- # 安全的方式
- find . -name "*.md" -print0 | xargs -0 rm
- # 等同于
- find . -name "*.md" -exec rm {} +
复制代码 2. 并行处置惩罚
- # 使用 xargs 并行压缩图片
- find . -name "*.png" | xargs -P 4 -I {} convert {} {}.jpg
复制代码 3. 预览将要实行的下令
- # 先查看会执行什么命令
- find . -name "*.bak" -exec echo rm {} \;
- # 确认无误后再执行
- find . -name "*.bak" -exec rm {} \;
复制代码 4. 组合利用示例
- # 查找过去7天修改过的 .log 文件并压缩
- find /var/log -name "*.log" -mtime -7 | xargs tar -czf logs.tar.gz
- # 在多级目录中查找并替换文本
- find . -type f -name "*.js" -exec grep -l "old_string" {} \; | xargs sed -i 's/old_string/new_string/g'
复制代码 5. xargs 的占位符利用
- # 使用 -I 指定占位符
- find . -name "*.txt" | xargs -I {} mv {} {}.backup
- # 批量下载 URL 列表
- cat urls.txt | xargs -n 1 -P 3 wget
复制代码 选择发起
- 利用 -exec {} +:当只须要简朴共同 find 下令时,更简便
- 利用 xargs:当须要更复杂的参数控制、并行处置惩罚,或要共同其他下令的输出时
- 处置惩罚特别字符:总是利用 -print0 | xargs -0 或 -exec {} + 制止文件名标题
两者都是处置惩罚批量文件操纵的强大工具,选择哪个取决于具体需求和个人偏好。
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |