开源是一种精神,分享是一种美德!

xargs

相关命令:暂无相关命令
xargs 又称管道命令,构造参数等。是给命令传递参数的一个过滤器,也是组合多个命令的一个工具 它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理 。简单的说 就是把 其他命令的给它的数据 传递给它后面的命令作为参数

主要参数

-d 为输入指定一个定制的分割符
-i 用 {} 代替 传递的数据
-I string 用string来代替传递的数据-n[数字] 设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-P n 允许的最大线程数量为n
-s[大小] 设置传递参数的最大字节数(小于131072字节)
-x 大于 -s 设置的最大长度结束 xargs命令执行

[root@localhost ~]# ls |grep .php |xargs -i mv {} {}.bak     #将当前目录下php文件,改名字

[root@localhost ~]# ls |grep .php |xargs -I {} mv {} {}.bak   #与上例相同

[root@localhost ~]# find ./ -name "*.tmp" | xargs -i rm -rf {}  #删除当前文件夹下的,tmp文件


# find ./ -type f -print0 |xargs -0 rm   #删除该目录的所有普通文件

# find ./ -type f -exec rm '{}' \;   #同上

# find ./ -type f -exec rm '{}' +   #同上

 

# svn st | awk '{print $2}' | xargs svn revert    #还原当前目录下跟SVN版本库有差异的所有文件

 

[root@localhost ~]#  find ./ -name "*.json" | xargs grep baidu   #查找所有含有baidu关键词的json文件

   

# 该命令用于从当前路径开始寻找包含特定字符串的文件。例子中可以看出,在test.txt文本中找到了字符串并打印了该行。
# find .| xargs grep "this is a test for finding" 2>null

 

[root@120 ~]# cat file1 
a=1
b=2
c=3
d=4
[root@120 ~]# cat file2
a=1
b=2
c=3
[root@120 ~]# grep -wf file1 file2 | xargs -i sed -i '/{}/d' file1  file2 
[root@120 ~]# cat file1 
d=4
[root@120 ~]# 
[root@120 ~]# cat file2
[root@120 ~]# 

 

a) 将多行文本转换单行输出
[root@bogon myDemo]# cat a

1 2 3 4 5

6 7 8 9 0

a s d f g

z x c v b

q w e r t

[root@bogon myDemo]# cat a |xargs
1 2 3 4 5 6 7 8 9 0 a s d f g z x c v b q w e r t

b) Xargs -n3,限制每行输出三个
[root@bogon myDemo]# cat a|xargs -n3

1 2 3

4 5 6

7 8 9

0 a s

d f g

z x c

v b q

w e r

t


c) -d 可以自定义一个定界符

[root@bogonmyDemo]# echo "wWwWw.WbWaWiWdWuW.WcWoWm" |xargs -Dw

w w w. b a i d u . c o m     #将W作为界定符

d)  -n -d 结合使用结合使用

[root@bogon myDemo]# echo "1 2 3 4 5 6 7 8 9"| xargs -d6 -n3

1 2 3 4 5   7 8 9   #这样的输出结果说明xargs按照6分隔符将字符串分为了两部分12345 和 789

[root@bogon myDemo]# echo "adas2esda2 dsa 2dasd2ds" |xargs -d2 -n2
adas esda

dsa  dasd

ds


e)  Xargs -I选项,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次

下面是将文件中的所有字符当做新文件的名字进行创建,

[root@bogon myDemo]# cat a |xargs -i touch {}

[root@bogon myDemo]# ls
1 2 3 4 5   6 7 8 9 0   a  a s d f g  q w e r t  z x c v b

[root@bogon myDemo]# pwd
/home/myDemo


再将所有的创建的删除

[root@bogon myDemo]# ls *
1 2 3 4 5   6 7 8 9 0   a  a s d f g  q w e r t  z x c v b

[root@bogon myDemo]# ls |xargs -i rm -f {}

[root@bogon myDemo]# ls


f)       实例

将文件或者文件夹改名

[root@bogon myDemo]# ls
a  b

[root@bogon myDemo]# ls |xargs -i mv {} {}.bak

[root@bogon myDemo]# ls
a.bak  b.bak

[root@bogon myDemo]#

删除指定文件

[root@bogon myDemo]# ls
a.xx  b.xx  c

[root@bogon myDemo]# ls *.xx
a.xx  b.xx

[root@bogon myDemo]# ls *.xx | xargs -i rm -f {}

[root@bogon myDemo]# ls
c

 

#  echo "splitXsplitXsplitXsplit" | xargs -d X 
split split split split

评论(0)

暂无评论

评论

名字:
验证码:
获取验证码
内容: