unix 存储空间不足 无法处理此命令_Linux命令篇 xargs|exec

linux 方便好用的命令 xargs|exec

1、xargs 命令用法简介

DESCRIPTION(某道翻译)
xargs从标准输入中读取条目,这些条目由空格分隔(可以用双引号或单引号或a保护)(反斜杠)或换行符,并使用从标准输入读取的项后跟任何初始参数执行一次或多次命令(默认为/bin/echo)。空白行上标准输入被忽略。
用于命令的命令行被构建,直到达到系统定义的限制(除非使用-n和-L选项)。指定的命令将被调用多少次
必须使用完输入项列表。通常,命令调用要比输入中的项少得多。这通常是有意义的
斜面性能优势。有些命令可以有效地并行执行;参见-P选项。
因为Unix文件名可以包含空格和换行,这种默认行为通常是有问题的;包含空格和/或换行的文件名被错误地处理
xargs。在这些情况下,最好使用-0选项,这样可以防止出现此类问题。当使用此选项时,您将需要确保生成
xargs的输入也使用一个空字符作为分隔符。例如,如果该程序是GNU find,那么-print0选项将为您完成这一工作。
如果对命令的任何调用以255的状态退出,xargs将立即停止,而不读取任何进一步的输入。当发生此故障时,stderr上发出错误信息笔 因为Unix文件名可以包含空格和换行,这种默认行为通常是有问题的;包含空格和/或换行的文件名被错误地处理

一般用法理解:

        将前面命令执行的结果通过管到符号标准输入xargs command,继续执行,注意:在传递参数过程中,是将参数一个一个传输的,而不是将所有字符串作为参数。

    例如

#批量创建很多文件时报错,提示参数列表太长,这是我们可以用xargs命令,将参数一个一个的传过去[root@jumpserver test]# touch 1{10..10000000}.log-bash: /usr/bin/touch: Argument list too long#创建下面的文件[root@jumpserver test]# seq 1 100000000000 |xargs touch#删除穿件的文件,当我们用*号时,代表将所有参数都删除,这种是删除不掉的,但是我们可以用xargs将参数一个一个的传[root@jumpserver test]# rm -rf *-bash: /usr/bin/rm: Argument list too long#使用xagrs删除,以删除[root@jumpserver test]# ls |xargs rm -rf[root@jumpserver test]# ls
#用空格做为分隔符的、可以用-n选项,指定1行几个参数。[root@jumpserver test]# seq 10 |xargs echo1 2 3 4 5 6 7 8 9 10[root@jumpserver test]# seq 10 |xargs -n 2 echo1 23 45 6[root@jumpserver test]# seq 10 |xargs -n 3 echo1 2 34 5 6[root@jumpserver test]# seq 10 |xargs -n 1 echo123#[root@jumpserver test]# find /sbin/ -perm /700 |xargs ls -l#一下创建10个用户[root@jumpserver test]# echo user{1..10} |xargs -n 1 useradd

   上诉中并未出现错误,xargs 默认是用空格分割参数的,但是当参数中有空格时就出出现报错,那么我们就需要制定为 ascill码中\0为分割符,这样就能删除了

例如:#这个文件带有一个空格[root@jumpserver test]# find -name *f*.txt./fa b.txt#删除时候报错,认为fa是一个文件 b.txt是一个文件[root@jumpserver test]# find -name *f*.txt |xargs rm rm: cannot remove ‘./fa’: No such file or directoryrm: cannot remove ‘b.txt’: No such file or directory#删除时候需要加 -0[root@jumpserver test]# find -name fa\ b.txt -print0 |xargs -0 rm

2、find 结合 -exec 和{}\;使用  

[root@jumpserver test]# find ./etc/ -name "*.conf" -exec cp {} {}.orig1 \;

65e84eaedcd5387b7d7009f1a74a0439.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值