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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

xargs用法

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xargs用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為啥要xargs?

通常linux命令可以用|首尾相連,上一個(gè)命令的 stdout 連接到下一個(gè)命令的 stdin。但是有些命令,比如ls、rm等,是從命令行參數(shù)接受輸入的。這時(shí)候如果想把上一個(gè)命令的輸出傳給它們,就不好辦了。所以就有了xargs。

簡(jiǎn)單而言,xargs可以把從 stdin 接受到的輸入,用空白符分隔開(kāi),然后依次作為參數(shù)去調(diào)用xargs后面的命令。

用法

舉個(gè)例子,想把所有.jpg文件刪除,當(dāng)然你可以rm *.jpg,但是如果要遞歸操作所有子目錄下的文件呢?

可以這樣:

find . -name "*.jpg" | xargs rm
  • 1

這樣,所有被find找到的文件名,都會(huì)作為參數(shù)來(lái)調(diào)用rm命令了。

對(duì)于大多數(shù)情況,這一行命令沒(méi)有問(wèn)題,但是如有些文件名中包含空格,就會(huì)有問(wèn)題了。xargs默認(rèn)以空白符分隔接受到的輸入,所以一個(gè)含有空格的文件名會(huì)被當(dāng)做多個(gè)參數(shù),分別傳給rm。所以在處理文件名這類(lèi)命令時(shí),通常要這樣:

find . -name "*.jpg" -print0 | xargs -0 rm
  • 1

這里的-print0是告訴find命令,在每個(gè)輸出后面以'\0'作為結(jié)束。-0是告訴xargs,使用'\0'來(lái)分隔輸入,而不是空白符。這樣就避免出現(xiàn)問(wèn)題了。

下面再考慮另一種情況,假設(shè)不是刪除,而是想把符合要求的文件名都添加上后綴.bak怎么辦?這時(shí)候需要這樣:

find . -name "*.jpg" -print0 | xargs -0 -I {} mv {} {}.bak
  • 1

其中的-I {}是告訴xargs,后面的命令中,用{}表示占位符,將會(huì)被實(shí)際的參數(shù)替代。這樣就行了。

其他有用的參數(shù)還有:
-n 用于指定每次傳遞幾個(gè)參數(shù)
-d 用于指定切分輸入內(nèi)容時(shí),具體的分隔符
其他更多的參數(shù),就參考man xargs吧。

總結(jié)

以上是生活随笔為你收集整理的xargs用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。