Command-Line
如何使用 grep 和/或 awk 在文件中選擇多個路徑名並刪除這些文件?
我有一些格式如下的輸出:
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