您好,登錄后才能下訂單哦!
這篇文章主要介紹“linux中xargs命令的用法”,在日常操作中,相信很多人在linux中xargs命令的用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux中xargs命令的用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
如何使用xargs命令
語法:
xargs [OPTIONS] [COMMAND [initial-arguments]]
舉一個例子:我們用管道符傳輸到xargs,并為每個參數運行touch命令,-t表示在執行之前先打印,創建三個文件:
[root@localhost ~]# echo "file1 file2 file3"|xargs -t touch touch file1 file2 file3
如何限制參數的數量
默認情況下,傳遞給命令的參數數量由系統限制決定。-n選項指定要傳遞給命令的參數個數。xargs根據需要多次運行指定的命令,直到所有參數都用完為止。
下面例子指定每次傳遞一個參數:
[root@localhost ~]# echo "file1 file2 file3"|xargs -n1 -t touch touch file1 touch file2 touch file3
如何運行多個命令
要使用xargs運行多個命令,請使用-i或者-I選項。在-i或者-I后面自定義一個傳遞參數符號,所有匹配的項都會替換為傳遞給xargs的參數。
下面例子時xargs運行兩條命令,先touch創建文件,然后ls列出來:
[root@localhost ~]# echo "file1 file2 file3"|xargs -t -I % sh -c 'touch %;ls -l %' sh -c touch file1 file2 file3;ls -l file1 file2 file3 -rw-r--r--. 1 root root 0 Jan 30 00:18 file1 -rw-r--r--. 1 root root 0 Jan 30 00:18 file2 -rw-r--r--. 1 root root 0 Jan 30 00:18 file3
如何指定一個分隔符
使用-d或者--delimiter選項設置自定義分隔符,可以是單個字符,也可以是以\ 開頭的轉義字符。
下面例子使用#做分隔符,echo命令使用了-n選項,意思是不輸出新行:
[root@localhost ~]# echo -n file1#file2#file3#file4|xargs -d \# -t touch touch file1 file2 file3 file4
如何從文件中讀取條目
xargs命令還可以從文件讀取條目,而不是從標準輸入讀取條目。使用-a選項,后跟文件名。
創建一個ip.txt的文件,一會使用xargs命令ping里面的每一個地址:
[root@localhost ~]# cat ip.txt 114.114.114.114 www.linuxprobe.com 202.102.128.68
使用-L 1選項,該選項表示xargs一次讀取一行。如果省略此選項,xargs將把所有ip傳遞給一個ping命令。
[root@localhost ~]# xargs -a ip.txt -t -L 1 ping -c 1 ping -c 1 114.114.114.114 PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data. 64 bytes from 114.114.114.114: icmp_seq=1 ttl=93 time=11.0 ms --- 114.114.114.114 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 11.026/11.026/11.026/0.000 ms ping -c 1 www.linuxprobe.com PING www.linuxprobe.com.w.kunlunno.com (221.15.65.202) 56(84) bytes of data. 64 bytes from hn.kd.jz.adsl (221.15.65.202): icmp_seq=1 ttl=48 time=20.9 ms --- www.linuxprobe.com.w.kunlunno.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 20.934/20.934/20.934/0.000 ms ping -c 1 202.102.128.68 PING 202.102.128.68 (202.102.128.68) 56(84) bytes of data. 64 bytes from 202.102.128.68: icmp_seq=1 ttl=83 time=8.71 ms --- 202.102.128.68 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 8.710/8.710/8.710/0.000 ms
xargs與find一起使用
xargs通常與find命令結合使用。您可以使用find搜索特定文件,然后使用xargs對這些文件執行操作。
若要避免包含換行符或其他特殊字符的文件名出現問題,請始終使用find的-print0選項,這樣可以使find打印完整的文件名,配合xargs命令使用-0或者--null選項可以正確的解釋。
下面例子中,查找log文件夾下面的類型為file的所有文件,打包壓縮起來:
[root@localhost ~]# find log/ -type f -print0|xargs --null tar -zcvf logs.tar.gz log/anaconda/anaconda.log log/anaconda/syslog log/anaconda/program.log log/anaconda/packaging.log log/anaconda/storage.log log/anaconda/ifcfg.log log/anaconda/ks-script-TOLvJc.log log/anaconda/ks-script-VRY9yQ.log log/anaconda/ks-script-pjDijm.log log/anaconda/journal.log log/audit/audit.log log/boot.log log/boot.log-20200126 log/btmp log/btmp-20200126 … [root@localhost ~]# ll total 604 -rw-------. 1 root root 1285 Dec 21 17:19 anaconda-ks.cfg drwxr-xr-x. 8 root root 4096 Jan 29 23:02 log -rw-r--r--. 1 root root 607566 Jan 30 00:58 logs.tar.gz
到此,關于“linux中xargs命令的用法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。