三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

响应式网站建设效果什么值得买 wordpress

响应式网站建设效果什么值得买 wordpress 响应式网站建设效果,什么值得买 wordpress,分类信息网站 建议 建设,黑黄logo网站xargs 是 Linux/Unix 命令行中非常高频的工具,核心作用是:把前一个命令的标准输出(stdin)转换成后一个命令的参数(argv)。很多命令(如 rm、cp、mv、grep、kill、docker、kubectl 等)不能直接从管道读取输入,只… xargs 是 Linux/Unix 命令行中非常高频的工具,核心作用是:把前一个命令的标准输出(stdin)转换成后一个命令的参数(argv)。很多命令(如 rm、cp、mv、grep、kill、docker、kubectl 等)不能直接从管道读取输入,只能接受命令行参数,这时候 xargs 就非常有用。1. 基本原理 例如: echo "a.txt b.txt c.txt" | xargs rm实际执行: rm a.txt b.txt c.txt等价于: echo 输出字符串|vxargs|v 把内容拆成参数传给 rm没有 xargs 的情况 很多人第一次会写: ls *.log | rm结果: rm: missing operand原因:ls 输出到 stdout rm 不会自动读取 stdin需要: ls *.log | xargs rm2. 高频场景一:批量删除文件 这是 xargs 最经典用途。 删除指定后缀文件 find . -name "*.tmp" | xargs rm执行: rm a.tmp b.tmp c.tmp文件名包含空格的问题 例如: hello world.txt test file.txt普通: find . -name "*.txt" | xargs rm会变成: rm hello world.txt test file.txt错误拆分。 推荐: find . -name "*.txt" -print0 | xargs -0 rm解释: find: -print0输出: hello world.txt\0xargs: -0按 null 分隔。 这是生产环境标准写法。3. 高频场景二:批量执行命令 例如: 查看多个文件: ls *.log | xargs cat等价: cat a.log b.log c.log批量 grep: find . -name "*.java" | xargs grep "TODO"相当于: grep TODO A.java B.java C.java4. 高频场景三:并发执行(非常重要) xargs 最大价值之一: 多进程并行 例如: 处理100个图片: find images -name "*.jpg" | xargs -P 8 convert -resize 50%参数: -P 8表示: 同时启动8个进程。 例如: 任务1 \ 任务2 \ 任务3 --- 8个worker 任务4 / ...非常适合:图片处理 日志分析 数据转换 编译任务 网络请求5. 高频场景四:控制每次参数数量 默认: xargs command会尽可能塞满参数。 例如: echo {1..100} | xargs echo可能: echo 1 2 3 ... 100限制数量: echo {1..100} | xargs -n 10 echo结果: echo 1 2 3 ... 10 echo 11 12 ...20 echo 21 ...30 ...用途: 批量接口: cat users.txt | xargs -n 50 ./send_mail.sh每次处理50个用户。6. 高频场景五:替换参数位置(-I) 默认: echo file.txt | xargs rm生成: rm file.txt但是有时候参数不是最后: 例如: echo test.txt | xargs -I {} mv {} /backup/执行: mv test.txt /backup/{} 是占位符。 常见: 批量创建目录 echo "a b c" | xargs -I {} mkdir {}执行: mkdir a mkdir b mkdir c批量下载 cat urls.txt | xargs -I {} wget {}7. 高频场景六:配合 find 这是最常见组合: find + xargs删除30天以前日志 find /var/log \ -name "*.log" \ -mtime +30 \ -print0 | \ xargs -0 rm查找代码中的关键词 find . -name "*.py" -print0 | xargs -0 grep "password"批量统计代码行数 find . -name "*.go" | xargs wc -l输出: 100 a.go 200 b.go 300 c.go8. 高频场景七:Git 操作 开发中非常常见。 删除所有已删除文件 查看: git status过滤: git status --porcelain | grep '^ D' | awk '{print $2}' | xargs git rm批量 checkout cat files.txt | xargs git checkout --9. 高频场景八:Docker 删除所有停止容器 传统: docker ps -aq输出: abc123 def456删除: docker ps -aq | xargs docker rm删除所有镜像: docker images -q | xargs docker rmi实际生产常见: docker ps -aq | xargs -r docker rm -f-r: 没有输入时不执行。 避免: docker rm -f报错。10. 高频场景九:kubectl Kubernetes 中大量使用。 查看 pod: kubectl get pods删除所有 pod: kubectl get pods -o name | xargs kubectl delete重启 deployment: kubectl get deploy -o name | xargs kubectl rollout restart11. 高频场景十:ssh 批量执行 服务器维护: hosts: server1 server2 server3执行: cat hosts | xargs -I {} ssh {} uptime结果: ssh server1 uptime ssh server2 uptime ssh server3 uptime并发: cat hosts | xargs -P5 -I{} ssh {} hostname同时5台。12. xargs 常用参数速查参数 作用 例子-0 null分隔 find -print0 | xargs -0-n 每次几个参数 xargs -n 10-I 替换变量 xargs -I {}-P 并发数量 xargs -P 8-r 空输入不执行 xargs -r rm-t 显示执行命令 xargs -t rm-a file 从文件读取 xargs -a list.txt13. xargs 调试技巧 查看实际执行命令 echo "a b c" | xargs -t rm输出: rm a b c只打印不执行 echo "a b c" | xargs echo空输入保护 危险: cat list.txt | xargs rm如果: list.txt为空可能执行: rm推荐: cat list.txt | xargs -r rm14. xargs 和 while read 对比 xargs 适合:批量参数 并发 简单命令例: cat file | xargs -P10 processwhile read 适合:复杂逻辑例如: while read file doecho "processing $file"backup "$file" done files.txt15. 生产环境黄金模板 安全删除 find /data \ -type f \ -name "*.log" \ -print0 | xargs -0 -r rm并发处理 cat tasks.txt | xargs -n1 -P8 ./worker.sh批量 SSH cat hosts | xargs -P10 -I{} ssh {} command批量 Docker 清理 docker ps -aq | xargs -r docker rm -f16. 一句话总结 xargs 的核心能力:把文本流转换成命令参数,并且可以批量、分组、并发执行。日常 Linux 运维中最常见组合: find + xargs grep + xargs docker + xargs kubectl + xargs ssh + xargs xargs -P 并发处理掌握这几个场景,基本覆盖 90% 的 xargs 使用。
← 返回列表