linux 命令之xargs

之所以能用到这个命令,关键是由于一些命令不支持 | (管道) 来传递参数。比如

ls | echo  #结果是空白   因为 ls  的结果 没有通过 | 传递给echo 

ls  | xargs echo  #正常输出了echo的结果


xargs选项:

 -0 :   处理一些特殊元字符

# ls New\ file
New file   (当前目录下 有一个 New file 文件,两个单词直接有空格)
#find . -name '*file' | xargs rm (查找当前文件下以file结尾的文件,删除它)
rm: 无法删除"./New": 没有那个文件或目录
rm: 无法删除"file": 没有那个文件或目录
(因为 xargs以空白字元作为分割,所以有一些档案名含有空白字元时,xargs会误判)

正确的做法是:
find . -name '*file' | xargs -0 rm


-a file: 从文件中读入作为标准输入

#cat test
hello world
#xargs -a test echo
hello world


-E flag : flag必须是一个以空格分隔的标志,当xargs分析到含有这个flag这个标志的时候就停止

#cat txt | xargs -E 'shou' echo
bin tao

-p : 交互模式

# cat txt | xargs -p echo
echo bin tao shou lun ?...y
bin tao shou lun


-n num: num代表次数,表示命令在执行的时候一次用一个参数,默认是用所有参数

# cat txt | xargs -n 1 echo
bin
tao
shou
lun
#$ cat txt | xargs  echo
bin tao shou lun


 -t : 代表先打印命令,然后在执行

# cat txt | xargs -t  echo
echo bin tao shou lun 
bin tao shou lun


-i 或 -I 看linux的支持,将xargs的每项名称,一行一行的赋值给{ }

# ls -l
-rwxrwxrwx 1 root root 0 4月  17 22:28 1
-rwxrwxrwx 1 root root 0 4月  17 22:28 2
-rwxrwxrwx 1 root root 0 4月  17 22:28 3
-rwxrwxrwx 1 root root 0 4月  17 22:28 4
-rwxrwxrwx 1 root root 0 4月  17 22:28 5
#ls | xargs -i {} {}.bak
# ls 
1.bak  2.bak  3.bak  4.bak  5.bak


-r : 当xargs的输入为空的时候则停止xargs

# echo "" | xargs mv
mv: 缺少了文件操作数

# echo "" | xargs -r mv



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值