xagrs

1. xargs - build and execute command lines from standard input 

  将标准输入接收到数据重新格式化,再将其作为参数提供给其他命令(xargs的默认命令是echo,空格是默认定界符,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代

  如下:默认命令是echo 空格是默认符

[root@node2 images]# ls|xargs
1-10.jpg 1-11.jpg 1-12.jpg 1-13.jpg 1-14.jpg 1-15.jpg 1-16.jpg 1-17.jpg 1-18.jpg 1-19.jpg 1-1.jpg 1-20.jpg 1-21.jpg 1-22.jpg 1-23.jpg 1-24.jpg 1-25.jpg 1-26.jpg 1-27.jpg 1-28.jpg 1-29.jpg 1
-2.jpg 1-30.jpg 1-31.jpg 1-32.jpg 1-3.jpg 1-4.jpg 1-5.jpg 1-6.jpg 1-7.jpg 1-8.jpg 1-9.jpg 
[root@node2 images]# ls|xargs echo
1-10.jpg 1-11.jpg 1-12.jpg 1-13.jpg 1-14.jpg 1-15.jpg 1-16.jpg 1-17.jpg 1-18.jpg 1-19.jpg 1-1.jpg 1-20.jpg 1-21.jpg 1-22.jpg 1-23.jpg 1-24.jpg 1-25.jpg 1-26.jpg 1-27.jpg 1-28.jpg 1-29.jpg 1
-2.jpg 1-30.jpg 1-31.jpg 1-32.jpg 1-3.jpg 1-4.jpg 1-5.jpg 1-6.jpg 1-7.jpg 1-8.jpg 1-9.jpg

  

2.几个使用的例子

  1) 复制当前目录下所有图片到其他目录

[root@node2 test]# pwd
/root/test
[root@node2 test]# ll
total 4464
-rw-r--r-- 1 root root  410696 Mar 15 20:25 1-4.jpg
-rw-r--r-- 1 root root 1003388 Mar 15 20:25 1-5.jpg
-rw-r--r-- 1 root root  832803 Mar 15 20:25 1-6.jpg
-rw-r--r-- 1 root root  874385 Mar 15 20:25 1-7.jpg
-rw-r--r-- 1 root root  274163 Mar 15 20:25 1-8.jpg
-rw-r--r-- 1 root root 1165053 Mar 15 20:25 1-9.jpg
-rw-r--r-- 1 root root       0 Mar 15 23:37 1.txt
[root@node2 test]# ls *.jpg |xargs -n1 -I x cp x /data/images/
[root@node2 test]# ll /data/images/
total 4464
-rw-r--r-- 1 root root  410696 Mar 15 23:38 1-4.jpg
-rw-r--r-- 1 root root 1003388 Mar 15 23:38 1-5.jpg
-rw-r--r-- 1 root root  832803 Mar 15 23:38 1-6.jpg
-rw-r--r-- 1 root root  874385 Mar 15 23:38 1-7.jpg
-rw-r--r-- 1 root root  274163 Mar 15 23:38 1-8.jpg
-rw-r--r-- 1 root root 1165053 Mar 15 23:38 1-9.jpg

  注:其中的x 就是一个表示  一般用{} 

        2)通过以下的命令找到没用的文件(50天前的),然后删除

    [root@ticketb ~]# find /home/oracle/admin/dbticb/udump/ -name "dbticb_*.trc" -mtime +50 | xargs rm -rf

    2)查找包含特定内容的文件

[hadoop@hadoop-001 ~]$ find ./ -name "*a*"|xargs grep "test"
./test/a.txt:test filr
./.bash_history:sudu mkdir /opt/test
./.bash_history:sudo mkdir /opt/test
./.bash_history:echo "test">hello
./.bash_history:hdfs  dfs -mkdir -p  /test
./.bash_history:hdfs dfs -put .bash_profile  /test
[hadoop@hadoop-001 ~]$ cat ./test/a.txt 
test filr

 

[hadoop@hadoop-001 ~]$ find ./ -name "*a*" -exec grep "test" {} ;
test filr
sudu mkdir /opt/test
sudo mkdir /opt/test
echo "test">hello
hdfs  dfs -mkdir -p  /test
hdfs dfs -put .bash_profile  /test

  

 

  

  

原文地址:https://www.cnblogs.com/jycjy/p/8580109.html