Bash

將 grep 輸出給 rm

  • December 28, 2021

我正在嘗試將grep輸出傳遞到rm,但它輸出無用的東西。是否需要任何開關rm?或者可以rm直接提供一個正則表達式嗎?

ls | grep '^\[Daruchini'| rm

rm: 缺少操作數 嘗試使用 `rm –help’ 獲取更多資訊。

您需要使用xargs將標準輸入轉換為rm.

$ ls | grep '^Dar' | xargs rm

(注意文件名中的特殊字元;使用 GNU grep,您可能更喜歡

$ ls | grep -Z '^Dar' | xargs -0 rm

)

此外,雖然 shell 不使用正則表達式,但這是一個簡單的模式:

$ rm Dar*

(同時,我想我需要更多的睡眠。)

不要解析ls.

在這裡,讓 shell 過濾您想要的文件非常簡單。請注意,擴展模式的是外殼Dar*,而不是rm命令。shell 執行的模式擴展稱為globbing

rm Dar*

在更複雜的情況下,查找find命令。

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