首頁·終端機命令

xargs

文字處理

用法

[cmd] | xargs [cmd2]

把輸入的行變成另一個命令的參數;名字裡有空格就會出錯,除非兩邊都用 NUL,也就是 find -print0 配 xargs -0。

常用選項

選項含義
-nHow many arguments to hand over per run
-IPut the argument where a placeholder such as {} sits
-0Read NUL-separated input, to pair with find -print0
-PRun that many copies at once
-rDo not run the command at all on empty input
-tPrint each command before running it

範例

find . -name '*.log' -print0 | xargs -0 rm

Deletes them even when names hold spaces.

xargs -n1 -P4 curl -O < urls.txt

Four downloads at a time.

ls *.txt | xargs -I{} mv {} old/{}

Uses {} where the file name goes.

它們本來就是用管線串起來用的。串三條往往比讓一條命令做完所有事更短。

怎麼看

  • 方括號 [ ] 表示這部分可以不寫。
  • 省略號 … 表示可以寫多個。
  • 選項區分大小寫——有些命令裡 -r 和 -R 不是一回事。

常見問題

Q. xargs 是做什麼的?

把輸入的行變成另一個命令的參數;名字裡有空格就會出錯,除非兩邊都用 NUL,也就是 find -print0 配 xargs -0。

Q. 怎麼寫?

[cmd] | xargs [cmd2] —— 方括號表示可以省略的部分。

Q. 值得記的選項有幾個?

這裡列了 6 個,完整列表在 man xargs。這條命令屬於文字處理。

相關命令

man 手冊: man xargs