Command-Line

如何使用 grep 和/或 awk 在文件中選擇多個路徑名並刪除這些文件?

  • March 26, 2018

我有一些格式如下的輸出:

foo: /some/long/path_with_underscores-and-hyphens/andnumbers1.ext exists in filesystem
foo: /another/one.ext exists in filesystem
bar: /another/path/and/file.2 exists in filesystem

我需要刪除這些文件。如何提取每個路徑並刪除文件?我知道它awk可以擷取路徑,因為它始終是行中的第二個元素,但我不知道從哪裡開始抓取它們並將它們輸入到類似rm.

awk和它的system()功能。

awk '{ system("echo rm "$2) }' list

當您的文件名中沒有空格時,上面是正確的,如果您在下面嘗試。

awk '{gsub(/^.*: | exists in filesystem$/,""); system("echo rm \"" $0"\"")}' list

請注意,以上都無法檢測到文件名中的換行符(如果有的話)。

刪除以echo進行空執行。

簡單**awk+xargs**方法:

awk '{ print $2 }' file | xargs -n1 rm

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