linux之xargs使用技巧

Unix
命令都带有参数,有些命令可以接受”标准输入(stdin)”作为参数。而管道命令(|)的作用,是将左侧命令的标准输出转换为标准输入,提供给右侧命令作为参数使用。虽然,在 Unix 系统中大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。比如,我们日常使用的 echo 命令就不接受管道传参。而 xargs 命令的作用,就是将标准输入转为命令行参数。
xargs基本用法
# grep命令接受管道传参> cat /etc/passwd | grep root# echo命令不接受管道传参> echo "hello rumenz" | echo# 将标准输入转为命令行参数> echo "hello rumenz" | xargs echohello rumenz
-d
指定分隔符,默认使用空格分割
# 空格作为分隔符$ echo "one two three" | xargs mkdir# 指定制表符\t作为分隔符$ echo -e "a\tb\tc" | xargs -d "\t" echoa b c
-p
打印出要执行的命令并询问用户是否要执行
> echo 'one two three' | xargs -p touchtouch one tow three ?...y
-0
表示用 null 当作分隔符
find命令有一个特别的参数-print0,用来指定输出的文件列表以null作为分隔符
> find /path -type f -print0 | xargs -0 rm
指定多少行作为一个命令行参数
> xargs -L 1 find -name"*.txt"./1.txt./rumenz.txt./2.txt./3.txt
-n
指定每次将多少项作为命令行参数
> echo {0..9} | xargs -n 2 echo
指定每一项命令行参数的替代字符串
# 将命令行参数传给多个命令> cat foo.txtonetwothree> cat foo.txt | xargs -I {} sh -c 'echo {}; mkdir {}'onetwothree> lsone two three
将多行输入转换成单行输入
> cat rumenz.txt1 2 3 45 67 8 9> cat rumenz.txt | xargs1 2 3 4 5 6 7 8 9
将单行文本转换成多行
> cat rumenz.txt1 2 3 4 5 6 7 8 9> cat rumenz.txt | xargs -n 31 2 34 5 67 8 9
指定分隔符进行行转换
> echo "rumenz:123:rumenz:456:rumenz:789" | xargs -d : -n 2rumenz 123rumenz 456rumenz 789
xargs和find结合
> find . -type f -name "*.txt" -print | xargs rm -f
批量下载文件
> cat rumenz.txt | xargs wget -c
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具