溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux中xargs命令的使用方式是什么

發(fā)布時間:2022-01-21 09:18:27 來源:億速云 閱讀:176 作者:kk 欄目:開發(fā)技術(shù)

linux中xargs命令的使用方式是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

xargs 是給命令傳遞參數(shù)的一個過濾器,可以將管道或標準輸入的數(shù)據(jù)轉(zhuǎn)換成參數(shù),默認的命令是 echo,這意味著通過管道傳遞給 xargs 的輸入將會包含換行,不過通過 xargs 的處理,換行將被空格取代。

如何使用xargs命令

語法:

xargs [OPTIONS] [COMMAND [initial-arguments]]

舉一個例子:我們用管道符傳輸?shù)絰args,并為每個參數(shù)運行touch命令,-t表示在執(zhí)行之前先打印,創(chuàng)建三個文件:

[root@localhost ~]# echo "file1 file2 file3"|xargs -t touchtouch file1 file2 file3

如何限制參數(shù)的數(shù)量

默認情況下,傳遞給命令的參數(shù)數(shù)量由系統(tǒng)限制決定。-n選項指定要傳遞給命令的參數(shù)個數(shù)。xargs根據(jù)需要多次運行指定的命令,直到所有參數(shù)都用完為止。

下面例子指定每次傳遞一個參數(shù):

[root@localhost ~]# echo "file1 file2 file3"|xargs -n1 -t touchtouch file1touch file2touch file3

如何運行多個命令

要使用xargs運行多個命令,請使用-i或者-I選項。在-i或者-I后面自定義一個傳遞參數(shù)符號,所有匹配的項都會替換為傳遞給xargs的參數(shù)。

下面例子時xargs運行兩條命令,先touch創(chuàng)建文件,然后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選項設(shè)置自定義分隔符,可以是單個字符,也可以是以\ 開頭的轉(zhuǎn)義字符。

下面例子使用#做分隔符,echo命令使用了-n選項,意思是不輸出新行:

[root@localhost ~]# echo -n file1#file2#file3#file4|xargs -d \# -t touchtouch file1 file2 file3 file4

如何從文件中讀取條目

xargs命令還可以從文件讀取條目,而不是從標準輸入讀取條目。使用-a選項,后跟文件名。
創(chuàng)建一個ip.txt的文件,一會使用xargs命令ping里面的每一個地址:

[root@localhost ~]# cat ip.txt114.114.114.114www.linuxprobe.com202.102.128.68

使用-L 1選項,該選項表示xargs一次讀取一行。如果省略此選項,xargs將把所有ip傳遞給一個ping命令。

[root@localhost ~]# xargs -a ip.txt -t -L 1 ping -c 1ping -c 1 114.114.114.114PING 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 0msrtt min/avg/max/mdev = 11.026/11.026/11.026/0.000 msping -c 1 www.linuxprobe.comPING 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 0msrtt min/avg/max/mdev = 20.934/20.934/20.934/0.000 msping -c 1 202.102.128.68PING 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 0msrtt min/avg/max/mdev = 8.710/8.710/8.710/0.000 ms

xargs與find一起使用

xargs通常與find命令結(jié)合使用。您可以使用find搜索特定文件,然后使用xargs對這些文件執(zhí)行操作。

若要避免包含換行符或其他特殊字符的文件名出現(xiàn)問題,請始終使用find的-print0選項,這樣可以使find打印完整的文件名,配合xargs命令使用-0或者–null選項可以正確的解釋。

下面例子中,查找log文件夾下面的類型為file的所有文件,打包壓縮起來:

[root@localhost ~]# find log/ -type f -print0|xargs --null tar -zcvf logs.tar.gzlog/anaconda/anaconda.loglog/anaconda/sysloglog/anaconda/program.loglog/anaconda/packaging.loglog/anaconda/storage.loglog/anaconda/ifcfg.loglog/anaconda/ks-script-TOLvJc.loglog/anaconda/ks-script-VRY9yQ.loglog/anaconda/ks-script-pjDijm.loglog/anaconda/journal.loglog/audit/audit.loglog/boot.loglog/boot.log-20200126log/btmplog/btmp-20200126…[root@localhost ~]# lltotal 604-rw-------. 1 root root   1285 Dec 21 17:19 anaconda-ks.cfgdrwxr-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系統(tǒng)

Linux是一種免費使用和自由傳播的類UNIX操作系統(tǒng),是一個基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運行主要的Unix工具軟件、應用程序和網(wǎng)絡(luò)協(xié)議。

關(guān)于linux中xargs命令的使用方式是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI