今天突然发现一个很常用的命令xargs一直在使用,但是没有讲,今天补一下!
在日常使用 Linux 时,我们经常会把命令通过管道 | 连接起来,例如:但有时候你会遇到这样的问题:某些命令无法直接接收管道输入。find . -name "*.log" | rm
执行后往往会报错,因为 rm 并不会自动读取标准输入。掌握 xargs 后,你的 Linux 命令组合能力会大幅提升。一、xargs 的基本语法
echo "file1 file2 file3" | xargs mkdir
file1
file2
file3
原理是:echo 输出 → xargs → 转成 mkdir 参数二、配合 find 使用(最常见场景)
在 Linux 中,xargs 最经典的搭档就是find。find /tmp -name "*.log" | xargs rm -f
rm -f file1.log file2.log file3.log
三、使用 -n 控制参数数量
默认情况下,xargs 会把尽可能多的参数传给命令。echo "1 2 3 4 5 6" | xargs -n 2 echo
1 2
3 4
5 6
四、使用 -I 指定占位符
echo "test1 test2 test3" | xargs -I {} touch {}.txt
test1.txt
test2.txt
test3.txt
五、批量执行命令
10 file1.txt
20 file2.txt
15 file3.txt
六、配合 grep 搜索文件内容
ls *.log | xargs grep "ERROR"
七、使用 -p 进行交互确认
如果操作比较危险,比如删除文件,可以使用 -p 进行确认。rm file1.log file2.log ?...八、xargs 与 find -exec 的区别
find . -name"*.log"-exec rm {} \;
xargs 的性能通常更好。
九、使用 -0 解决文件名空格问题
如果文件名中包含空格,普通 xargs 可能会解析错误。find . -name"*.txt" -print 0 | xargs -0 rm
十、小结
xargs 是 Linux 中非常重要的工具,它解决了“标准输入转参数”的问题。xargs 是 Linux 管道操作中的“参数转换器”。
如果你正在学习 Linux 命令行工具,熟练掌握 xargs 会让你的效率提升一个档次