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

 

需要注意的是 xargs 后面的默认跟的是 echo 命令,所以它可以单独使用。

 

-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

posted @   逐梦北京  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示