Linux shell -- find 与 xargs命令

find / -name "*.ini" -exec file {} \;
find / -name "*.ini" | xargs -i file {} 


find ./ -name '*.txt' -type f -print -exec -maxdepth 2 command {}  \;

-name    : 匹配的文件名

-maxdepth   -mindepth     : 指定搜索层上下限

-type    : 指定文件类型,可以是b|c|f|d(块设备|终端|文件|目录)等类型

-print -print0    : 打印匹配的文件名,-print0用于特殊文件名的打印

 -exec command {} \;    : 每找到一个文件,文件名替换到 '{}' 的位置,然后执行 command $filename 。注意-exec选项,在shell中执行时后面要跟一个"\;" (其中'\'表示在shell中对';'的转义),或写成:find . -name '*.txt' -exec command {} ';' 


xargs  -i -n 2 command $args {} 

-i,--replace=[R]    : 依次从标准输入中读取参数替换到指定字段R,然后执行command。若不指定R,则默认替换位置为'{}'的位置;

-n    : 指定每次从输入流读取的参数个数。指定-i,则-n选项失效。若不指定-i和-n,则将所有读取内容填充到$args 位置后面,command只执行依次。


例子:

[root@Ustor orange]# ls
A.txt  B.txt  C.txt  D.txt  E.txt

[root@Ustor orange]# find . -name '*.txt' -exec echo {} '##' \;
./A.txt ##
./B.txt ##
./C.txt ##
./D.txt ##
./E.txt ##
[root@Ustor orange]# find . -name '*.txt' -print -exec echo {} '##' ';'      ##打印名字再执行命令
./A.txt
./A.txt ##
./B.txt
./B.txt ##
./C.txt
./C.txt ##
./D.txt
./D.txt ##
./E.txt
./E.txt ##

[root@Ustor orange]# find . -name '*.txt' | xargs echo '##'          ##全部参数填充
## ./A.txt ./B.txt ./C.txt ./D.txt ./E.txt
[root@Ustor orange]# find . -name '*.txt' | xargs -n 2 echo '##'       ##每次最多填充2个
## ./A.txt ./B.txt
## ./C.txt ./D.txt
## ./E.txt
[root@Ustor orange]# find . -name '*.txt' | xargs -n 2 -i echo {} '##'      ##使用-i逐次替换,-n失效
./A.txt ##
./B.txt ##
./C.txt ##
./D.txt ##
./E.txt ##

[root@Ustor orange]# find . -name '[AB].txt' | xargs -i cp {} {}.bak       ##A,B文件做备份
[root@Ustor orange]# ls
A.txt  A.txt.bak  B.txt  B.txt.bak  C.txt  D.txt  E.txt


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值