1. 程式人生 > >一天一命令-xargs

一天一命令-xargs

xargs

一天一命令-xargs


xargs

傳遞標準輸入作為下一個命令的參數或者重新格式化並輸出

xargs默認命令是echo,默認分隔符是空格。xargs可以將輸入文本轉換為單行或多行顯示,即指定每行顯示的個數。

Usage: xargs [OPTION]... COMMAND INITIAL-ARGS...
-0 顯示為一列,默認顯示為一行,以空格為分隔符
-a file 從文件讀取數據而非標準輸入
-d 指定分隔符
-l num 指定每行顯示的參數個數
-n num 指定以空格為分隔符顯示每行的參數個數,如果一個文件(或參數)之間有空格,將被分割為兩個文件(或參數)

ls /root/ |xargs

ls /root/ |xargs -d\空格 -l2 //註意空格需要轉義

#touch a\ b.txt   //創建一個文件名包含空格的文件
#ls
a b.txt  Desktop/    Downloads/  Pictures/  script/     Videos/
a.log   Documents/  Music/      Public/    Templates/
#ls | xargs  //默認顯示為一行,並且以空格為分隔符,所以文件a b.txt將會被分割為兩個文件a和b.txt
a b.txt a.log Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ script/ Templates/ Videos/
#ls | xargs -0   //-0顯示為一列,就不會出現上面的問題,推薦使用
a b.txt
a.log
Desktop/
Documents/
Downloads/
Music/
Pictures/
Public/
script/
Templates/
Videos/
#ls | xargs -n3
a b.txt a.log   //-n3應該顯示為每行3個文件,但因為文件a b.txt之間有空格,所以被分割為2個文件顯示
Desktop/ Documents/ Downloads/
Music/ Pictures/ Public/
script/ Templates/ Videos/
#ls | xargs -l3
a b.txt a.log Desktop/   //-l正常顯示每行3個文件
Documents/ Downloads/ Music/
Pictures/ Public/ script/
Templates/ Videos/
#echo "a:b:c:d:e" |xargs -d:
a b c d e
#echo "a:b:c:d:e" |xargs -d: -n2
a b
c d
e

如果需要刪除的文件數目太多,提示文件名太長,則可以通過xargs命令自動逐個刪除

#find . -type f -name "*.log" -print | xargs -0 rm -f

復制當前目錄下的*.jpg到/data/images

#ls *.jpg | xargs -n1 -I cp {} /data/images

統計一個源代碼目錄中所有php文件的個數

#find . -type f -name "*.php" -print | xargs -0 wc -l

查找所有的jpg 文件,並且壓縮它們

#find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

假如你有一個文件包含了很多你希望下載的URL,你能夠使用xargs下載所有鏈接

#cat url-list.txt | xargs wget -c


本文出自 “rackie” 博客,請務必保留此出處http://rackie386.blog.51cto.com/11279229/1939444

一天一命令-xargs