Rm
從目錄中刪除數十億個文件,同時查看進度
我有一個 30 TB 的目錄,其中包含數十億個文件,這些文件正式都是 JPEG 文件。我正在刪除每個文件夾的文件,如下所示:
sudo rm -rf bolands-mills-mhcptz
該命令只是執行,並且無論它是否工作都不會顯示任何內容。
我想看看它正在刪除文件或命令的目前狀態。
您可以使用
rm -v
已rm
刪除的每個文件列印一行。這樣你就可以看到它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
。