Rm

安全地搜尋和刪除文件

  • February 29, 2016

我想搜尋nohup.out我安裝的文件系統中的所有內容,然後刪除它們。

  1. 有一些目錄和文件的文件名包含空格,所以我想到了xargs -0.
  2. 為了安全起見,我想以互動方式刪除它們,即被問到我是否真的要刪除它們。所以我想到rm -ixargs -p
  3. 我也想單獨刪除每個找到的文件,所以我想到了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 {} \;

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