Command-Line

為什麼在這種情況下使用 xargs 會失敗?

  • December 15, 2011

我試圖了解的用法xargs並做了以下實驗。

ls | xargs | touch

我想刷新目前目錄中的文件日期和目錄。

雖然有點,因為我可以使用更簡單的形式來達到同樣的效果。

在我看來,xargs從 中讀取STDIN並將其轉換為其他命令的參數(/bin/echo預設情況下,如果未指定命令)。我是不是誤會了什麼?

它失敗了,我想知道為什麼。

它需要是這樣的:

ls | xargs touch

該命令使用從標準輸入讀取的多個字元串來xargs執行該命令。touch在您的情況下, stdin forxargs是來自ls.

你有命令的方式:

ls | xargs | touch

xargs沒有針對將從標準輸入讀取的字元串(文件名)執行的命令。在這種情況下,xargs只需列印每個文件名,並touch在其標準輸入中獲取文件名列表。但touch不會從它的標準輸入中讀取,並且由於您沒有給它任何參數,它應該列印出如下錯誤消息:

touch: missing file operand
Try `touch --help' for more information.

(你應該在你的問題中提到)。

引用自:https://unix.stackexchange.com/questions/26869