linux xargs命令的使用及其与exec、管道的区别
1、作用:
(1)將前一個命令的標準輸出傳遞給下一個命令,作為它的參數,xargs的默認命令是echo,空格是默認定界符
(2)將多行輸入轉換為單行
2、使用模式:front command | xargs -option later command
front command: 前一個命令
-option: xargs的選項
later command: 后一個命令
3、xargs常用選項
-n: 指定一次處理的參數個數
-d: 自定義參數界定符
-p: 詢問是否運行 later command 參數
-t : 表示先打印命令,然后再執行
-i : 逐項處理
...更多參數查看man xargs
4、使用實例
測試文本:xargs.txt
[python] view plain copy
[python] view plain copy
( 2)指定一次處理的參數個數:指定為5,多行輸出
[python] view plain copy
(3)自定義參數界定符:指定界定符為'm'
[python] view plain copy
(4)詢問是否運行 later command 參數
[python] view plain copy
(5)將所有文件重命名,逐項處理每個參數
[python] view plain copy
更多參數選項查看man xargs
5、xargs與管道|的區別
| 用來將前一個命令的標準輸出傳遞到下一個命令的標準輸入,xargs 將前一個命令的標準輸出傳遞給下一個命令,作為它的參數。
[python] view plain copy6、xargs與exec的區別
(1)exec參數是一個一個傳遞的,傳遞一個參數執行一次命令;xargs一次將參數傳給命令,可以使用-n控制參數個數
[python] view plain copy
(2)exec文件名有空格等特殊字符也能處理;xargs不能處理特殊文件名,如果想處理特殊文件名需要特殊處理
[python] view plain copy
原因:默認情況下, find 每輸出一個文件名, 后面都會接著輸出一個換行符 ('\n'),因此我們看到的 find 的輸出都是一行一行的,xargs 默認是以空白字符 (空格, TAB, 換行符) 來分割記錄的, 因此文件名 ./t t.txt 被解釋成了兩個記錄 ./t 和 t.txt, cat找不到這兩個文件,所以報錯,為了解決此類問題, ?讓 find 在打印出一個文件名之后接著輸出一個 NULL 字符 ('') 而不是換行符, 然后再告訴 xargs 也用 NULL 字符來作為記錄的分隔符,即 find -print0 和 xargs -0 ,這樣就能處理特殊文件名了。 [python] view plain copy
總結
以上是生活随笔為你收集整理的linux xargs命令的使用及其与exec、管道的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中正则表达式、find、xar
- 下一篇: cut、tee、split、xargs、