6 備忘
xargs可以將標準輸入作為輸入內容轉換成後續命令列的引數;
通常用於標準輸入或者處理管道將其轉換成特定命令列的執行引數
!
其常用功能總結如下:
建立測試檔案;
user@user:~/test$ touch a.md b.md c.md 1.js 2.js
user@user:~/test$ ls
1.js 2.js a.md bin b.md c.md
篩選檔案
fwd@fwd:~/test$ ls *.md | xargs ls -al
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 a.md
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 b.md
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 c.md
-i選項支援我們將管道傳入引數替換成指定字串,並再後續執行中使用字串展開為實際值進行處理。仍然以2創立檔案為例進行說明;
使用命令:
ls *.md |
xargs -i '{}'
mv.backup
ls *.md |
xargs -i '%'
mv % %.backup
執行結果:
fwd@fwd:~/test$ ls *.md | xargs -i '{}' mv {} {}.backup
fwd@fwd:~/test$ ls -l
總用量 4
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 1.js
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 2.js
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 a.md.backup
drwxr-xr-x 2 fwd fwd 4096 8月 3 22:03 bin
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 b.md.backup
-rw-r--r-- 1 fwd fwd 0 8月 3 22:44 c.md.backup
預設情況下我們從管道或者標準輸入分割引數,使用空格或者回車分割,xargs提供了多種其他分割機制。
有時候檔案存在特殊字元,比如空格或者回車字元,使用
touch 'hello 01.js' 'hello 02 .js'
fwd@fwd:~/test$ touch 'hello 01.js' 'hello 02 .js'
fwd@fwd:~/test$ ls -l
總用量 4
drwxr-xr-x 2 fwd fwd 4096 8月 3 22:03 bin
-rw-r--r-- 1 fwd fwd 0 8月 3 23:11 'hello 01.js'
-rw-r--r-- 1 fwd fwd 0 8月 3 23:11 'hello 02 .js'
此時使用之前形式會形成錯誤分割,造成無法正確識別檔案:
fwd@fwd:~/test$ find . -name "*.js"|xargs ls -l
ls: 無法訪問'./hello': 沒有那個檔案或目錄
ls: 無法訪問'01.js': 沒有那個檔案或目錄
ls: 無法訪問'./hello': 沒有那個檔案或目錄
ls: 無法訪問'02': 沒有那個檔案或目錄
ls: 無法訪問'.js': 沒有那個檔案或目錄
-rw-r--r-- 1 fwd fwd 0 8月 3 22:03 ./bin/a.js
-rw-r--r-- 1 fwd fwd 0 8月 3 22:03 ./bin/b.js
此時應該修正命令列如下所示
fwd@fwd:~/test$ find . -name "*.js" prin0 |xargs -0 ls -l
find: paths must precede expression: `prin0'
總用量 4
drwxr-xr-x 2 fwd fwd 4096 8月 3 22:03 bin
-rw-r--r-- 1 fwd fwd 0 8月 3 23:11 'hello 01.js'
-rw-r--r-- 1 fwd fwd 0 8月 3 23:11 'hello 02 .js'
如上所示,執行結果沒有了之前所示報錯。主要原因是我們再find引數使用時候使用了print0選項,將查詢結果加入null
字元後進行輸出顯示;然後xargs配合使用-0選項識別引數結束符,將有效檔名進行分割識別,避免錯誤將檔名空格擷取導致無法識別檔名的問題!
find
. -name "*.js"
|xargs
ls -l
cat url-list.txt |
xargs
wget -c
#### 2-將列印一列數字的偶數個篩選出來排序
echo
" 1 21 1 12 212 18"
|xargs -n2 |
awk''
|sort -r
####3-
echo
"user#ding#127.0.0.1#8080"
|xargs -d "#"
使用-t引數記錄xargs執行結果
fwd@fwd:~/test$ ls *.md |
xargs -t -i '%'
mv % %.1
mv a.md.backup.md a.md.backup.md.1
mv b.md.backup.md b.md.backup.md.1
mv c.md.backup.md c.md.backup.md.1
find 與xargs何用時候,為了避免檔名中含有特殊字元,特別是空格,會使用print0作為輸出,相應的xargs使用-0選項配合可以有效避免名字識別錯誤問題!
我的awk常用命令備忘 xargs備忘
kubectl get deployment n coding awk xargs kubectl rollout restart deployment n coding 重啟所有 coding命名空間 deployment 重啟業務deployment指令碼 bin bash user list ...
高階命令 xargs命令
xargs命令 linux 命令大全 xargs 英文全拼 extended arguments 是給命令傳遞引數的乙個過濾器,也是組合多個命令的乙個工具。xargs 可以將管道或標準輸入 stdin 資料轉換成命令列引數,也能夠從檔案的輸出中讀取資料。xargs 也可以將單行或多行文字輸入轉換為其...
xargs命令使用
功能介紹 man文件介紹為 從標準輸入重建並執行命令列。xargs是可以讀入stdin的資料,並且以空白符或斷行字元進行分辨,將stdin的資料分割成為arguements。因為是以空格符作為分隔,所以,如果有一些檔名或者其他意義的名詞內含空格符的時候,xargs可能就會誤判了。xargs選項表 選...