但行好事
莫论前程❤

Linux命令学习—-xargs命令

常用命令

# 删除3天以前的所有东西 (find . -ctime +3 -exec rm -rf {} \;)
find ./ -mtime +3 -print|xargs rm -f –r 

简介

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

​ 它擅长将标准输入数据转换成命令行参数xargs能够处理管道或者stdin并将其转换成特定命令的命令参数xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

xargs命令用法

xargs用作替换工具,读取输入数据重新格式化后输出。
定义一个测试文件,内有多行文本数据:

cat test.txt 
a b c d e f g 
h i j k l m n 
o p q 
r s t 
u v w x y z

多行输入单行输出:

cat test.txt | xargs 
a b c d e f g h i j k l m n o p q r s t u v w x y z
  • -n选项多行输出
cat test.txt | xargs -n3 
a b c 
d e f 
g h i 
j k l 
m n o 
p q r 
s t u 
v w x 
y z
  • -d选项可以自定义一个定界符:
echo "nameXnameXnameXname" | xargs -dX 
name name name name

​ 结合-n选项使用:

echo "nameXnameXnameXname" | xargs -dX -n2 
name name 
name name
  • xargs的一个-i选项或-I,使用-i指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,一般是一行一行替换,当-i与xargs结合使用,每一个参数命令都会被执行一次。 如下面命令表示将当前文件夹及所有子文件夹中的xml文件复制到另一目录,即合并同一类型的文件

    选项-i等价于-I

将find -name ‘.xml’ 的输出结果替换到{}所在的位置上

find -name '*.xml' |xargs -i cp {} /home/chaowei/data/jinin/label/

下面命令表示删除当前文件夹及所有子文件夹中的所有jpg图片

find -name '*.jpg' |xargs rm -r 

另外,使用find命令同样能够实现同样的功能

示例:

一次性删除某目录及其子目录下所有以.exe为后缀的文件。

find . -name '*.exe' -type f -print -exec rm -rf {} \;

说明:

find:       使用find命令搜索文件,使用它的-name参数指明文件后缀名。

.   :        是当前目录,因为Linux是树形目录,所以总有一个交集目录,这里根据需要设置

‘.exe’:       指明后缀名,是通配符

“ -type f “:  查找的类型为文件

“-print” :    输出查找的文件目录名

-exec:        -exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。

注意:exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号。
赞(1) 打赏
未经允许不得转载:刘鹏博客 » Linux命令学习—-xargs命令
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏