Rm

從目錄中刪除數十億個文件,同時查看進度

  • March 10, 2017

我有一個 30 TB 的目錄,其中包含數十億個文件,這些文件正式都是 JPEG 文件。我正在刪除每個文件夾的文件,如下所示:

sudo rm -rf bolands-mills-mhcptz

該命令只是執行,並且無論它是否工作都不會顯示任何內容。

我想看看它正在刪除文件或命令的目前狀態。

您可以使用rm -vrm刪除的每個文件列印一行。這樣你就可以看到它rm確實在刪除文件。但是,如果您有數十億個文件,那麼您將看到的只是它rm仍在工作。您將不知道已經刪除了多少文件以及剩下多少文件。

該工具pv可以幫助您進行進度估計。

http://www.ivarch.com/programs/pv.shtml

以下是使用範例輸出呼叫rm的方式pv

$ rm -rv dirname | pv -l -s 1000 > logfile
562  0:00:07 [79,8 /s] [====================>                 ] 56% ETA 0:00:05

在這個人為的例子中,我告訴pv了有1000文件。的輸出pv顯示 562 已被刪除,經過時間為 7 秒,估計完成時間為 5 秒。

一些解釋:

  • pv -l``pv通過換行符而不是字節數進行計數
  • pv -s number告訴pv總數是多少,以便它可以給你一個估計。
  • 最後的重定向logfile是為了乾淨的輸出。否則,來自的狀態行pv會與來自的輸出混淆rm -v。獎勵:您將擁有一個記錄已刪除內容的日誌文件。但要注意文件會變得很大。/dev/null如果您不需要日誌,也可以重定向到。

要獲取文件數,您可以使用以下命令:

$ find dirname | wc -l

如果有數十億個文件,這也可能需要很長時間。您也可以pv在這裡使用來查看它的計數

$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [     <=>                                              ]
278044

這裡它說計算 278k 個文件需要 4 秒。最後 ( 278044) 處的確切計數是來自 的輸出wc -l

如果您不想等待計數,那麼您可以猜測文件數或使用pv不估計:

$ rm -rv dirname | pv -l > logfile

像這樣,您將無法估計完成,但至少您會看到有多少文件已被刪除。/dev/null如果您不需要日誌文件,請重定向到。


挑剔:

  • 你真的需要sudo嗎?
  • 通常rm -r足以遞歸刪除。不需要rm -f

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