Rm
安全地搜尋和刪除文件
我想搜尋
nohup.out
我安裝的文件系統中的所有內容,然後刪除它們。
- 有一些目錄和文件的文件名包含空格,所以我想到了
xargs -0
.- 為了安全起見,我想以互動方式刪除它們,即被問到我是否真的要刪除它們。所以我想到
rm -i
和xargs -p
- 我也想單獨刪除每個找到的文件,所以我想到了
xargs -n 1
.但是以下命令不能按我希望的方式工作。
locate -i nohup.out | xargs -0 -n 1 -p rm -i
它不會提示刪除每個文件並徵求我的許可。
我想知道為什麼以及什麼命令能像我希望的那樣起作用?
順便說一句,我的 xargs 版本是 xargs (GNU findutils) 4.4.2。這可能是原因嗎?
但是以下命令不能按我希望的方式工作。
locate -i nohup.out | xargs -0 -n 1 -p rm -i
當然,如果您正在使用,
xargs -0
那麼您必須將其與locate -0
.它不會提示刪除每個文件並徵求我的許可。我想知道為什麼
xargs``/dev/tty
應在提示您時讀取輸入。xargs
它以這種方式工作,因此在使用’s stdin 讀取參數locate
和讀取選項響應之間沒有衝突-p
。但是,您正在使用
xargs
執行rm -i
. 該rm -i
命令還想讀取您的輸入,它將從標準輸入讀取。因此,它消耗了xargs
’ 的部分輸入,事情並沒有按您的預期工作。我希望什麼命令有效?
如果您使用的是 Bash,這是一種選擇:
xargs -a <(locate -0 -i nohup.out) -0 -n 1 -p rm -i
但是,您也可以在 find 中執行所有操作:
find / -depth -name nohup.out -ok rm -i '{}' ';'
改變 ‘;’ 到“+”一次刪除多個文件。在findutils 的 Texinfo 手冊中解釋了此要求以及解決此問題的各種方法。
find
不使用locate
find . -name "nohup.out" | xargs -n 1 -p rm
添加
rm -i
時,它充當-p
提示的輸入你也可以用
find
這種方式find . -name "nohup.out" -exec rm -i {} \;