linux中xargs命令的使用方式
在 中 xargs 是給 傳遞引數的一個過濾器,可以將管道或標準輸入的資料轉換成引數,預設的 是 echo,這意味著透過管道傳遞給 xargs 的輸入將會包含換行,不過透過 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. probe.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
PING .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
--- .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
總結
之所以能用到這個命令,關鍵是由於很多命令不支援管道符來傳遞引數,xargs可以解決這個問題,而且使用起來很方便,跟能強大。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2733880/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux系統中xargs命令的使用方式Linux
- Linux命令(1)——xargs命令Linux
- Linux中source命令的使用方式Linux
- Linux xargs命令介紹Linux
- Linux xargs 命令詳解Linux
- linux 命令值xargs與trLinux
- Linux中Sleep和Wait命令的使用方式LinuxAI
- Linux 引數代換 命令 xargsLinux
- 每天一個Linux命令(1):xargsLinux
- xargs 命令詳解,xargs 與管道的區別
- xargs 命令教程
- Linux中tail命令的使用詳解!LinuxAI
- Linux 中的 JQ 命令使用例項Linux
- Linux 中 ss 命令的使用例項Linux
- Linux中ip命令的使用例項Linux
- Linux中的basename命令使用例項Linux
- Linux 中如何使用 id 命令Linux
- Linux中如何使用alias命令Linux
- Linux中Type命令如何使用Linux
- 常用的Linux命令;Linux常用命令用法及實現方式Linux
- 使用 userdel 命令刪除 Linux 中的使用者Linux
- Linux中printf命令使用例項Linux
- 在 Linux中find命令使用技巧Linux
- Linux系統中的basename命令使用例項Linux
- 【Linux學習教程】Linux中Sed命令如何使用?Linux
- Linux grep命令的使用Linux
- 命令列技巧:使用 find 和 xargs 查詢和處理檔案命令列
- shell程式設計必須要掌握的命令-xargs程式設計
- 3 種使用 PostgreSQL 命令的方式SQL
- linux命令大全-linux命令使用和管理Linux
- Linux read命令的基本使用!Linux
- Linux中cd命令有何作用?如何使用?Linux
- 在Linux中如何使用at命令安排任務Linux
- Linux中如何禁止普通使用者使用su命令Linux
- linux 中 date命令的用法Linux
- Linux命令列中幾個使用history相關的技巧Linux命令列
- SQLite 基本命令使用方式SQLite
- linux 路由基本命令的使用Linux路由