日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux xargs命令的使用及其与exec、管道的区别

發布時間:2025/3/21 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
  • a?b?c?d?e?f?g???
  • h?i?j?k?l?m?n???
  • o?p?q??
  • r?s?t??
  • u?v?w?x?y?z??

  • (1)多行輸入單行輸出

    [python] view plain copy
  • cat?xargs.txt?|?xargs??


  • ( 2)指定一次處理的參數個數:指定為5,多行輸出

    [python] view plain copy
  • cat?xargs.txt?|?xargs?-n?5??


  • (3)自定義參數界定符:指定界定符為'm'

    [python] view plain copy
  • cat?xargs.txt?|?xargs?-d?m??



  • (4)詢問是否運行 later command 參數

    [python] view plain copy
  • cat?xargs.txt?|?xargs?-n?5?-p??



  • (5)將所有文件重命名,逐項處理每個參數

    [python] view plain copy
  • ls?*.txt?|xargs?-t?-i?mv?{}?{}.bak??



  • 更多參數選項查看man xargs


    5、xargs與管道|的區別

    | 用來將前一個命令的標準輸出傳遞到下一個命令的標準輸入,xargs 將前一個命令的標準輸出傳遞給下一個命令,作為它的參數。

    [python] view plain copy
  • #使用管道將ls的結果顯示出來,ls標準輸出的結果作為cat的標準輸出??
  • ls?|?cat??
  • #使用xargs將ls的結果作為cat的參數,ls的結果為文件名,所以cat?文件名即查看文件內容??
  • ls?|?xargs?cat??


  • 6、xargs與exec的區別

    (1)exec參數是一個一個傳遞的,傳遞一個參數執行一次命令;xargs一次將參數傳給命令,可以使用-n控制參數個數

    [python] view plain copy
  • #xargs將參數一次傳給echo,即執行:echo?begin?./xargs.txt?./args.txt??
  • find?.?-name?'*.txt'?-type?f?|?xargs?echo?begin??
  • ?#exec一次傳遞一個參數,即執行:echo?begin?./xargs.txt;echo?begin?./args.txt??
  • find?.?-name?'*.txt'?-type?f?-exec?echo?begin?{}?\;??

  • (2)exec文件名有空格等特殊字符也能處理;xargs不能處理特殊文件名,如果想處理特殊文件名需要特殊處理

    [python] view plain copy
  • #find后的文件名含有空格??
  • find?.?-name?'*.txt'?-type?f?|?xargs?cat??
  • find?.?-name?'*.txt'?-type?f?-exec?cat?{}?\;??


  • 原因:默認情況下, find 每輸出一個文件名, 后面都會接著輸出一個換行符 ('\n'),因此我們看到的 find 的輸出都是一行一行的,xargs 默認是以空白字符 (空格, TAB, 換行符) 來分割記錄的, 因此文件名 ./t t.txt 被解釋成了兩個記錄 ./t 和 t.txt, cat找不到這兩個文件,所以報錯,為了解決此類問題, ?讓 find 在打印出一個文件名之后接著輸出一個 NULL 字符 ('') 而不是換行符, 然后再告訴 xargs 也用 NULL 字符來作為記錄的分隔符,即 find -print0 和 xargs -0 ,這樣就能處理特殊文件名了。 [python] view plain copy
  • #xargs處理特殊文件名??
  • find?.?-name?'*.txt'?-type?f?-print0?|?xargs?-0??cat??

  • 總結

    以上是生活随笔為你收集整理的linux xargs命令的使用及其与exec、管道的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。