Mám adresář o velikosti 30 TB s miliardami souborů, které jsou formálně všechny soubory JPEG. Každou složku souborů mažu takto:
sudo rm -rf bolands-mills-mhcptz
Tento příkaz se pouze spustí a nic neukáže, zda funguje nebo ne.
Chci vidět, jak maže soubory nebo jaký je aktuální stav příkazu.
Přijatá odpověď:
Můžete použít rm -v
mít rm
vytisknout jeden řádek na odstraněný soubor. Tímto způsobem můžete vidět, že rm
skutečně pracuje na odstranění souborů. Ale pokud máte miliardy souborů, uvidíte pouze to rm
stále pracuje. Nebudete mít ponětí, kolik souborů je již smazáno a kolik zbývá.
Nástroj pv
vám může pomoci s odhadem postupu.
http://www.ivarch.com/programs/pv.shtml
Zde je návod, jak byste vyvolali rm
s pv
s ukázkovým výstupem
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
V tomto vykonstruovaném příkladu jsem řekl pv
že jich je 1000
soubory. Výstup z pv
ukazuje, že 562 je již smazáno, uplynulý čas je 7 sekund a dokončení odhadu je za 5 sekund.
Nějaké vysvětlení:
pv -l
dělápv
počítat po nových řádcích místo bajtůpv -s number
říkápv
jaký je celkový součet, aby vám mohl poskytnout odhad.- Přesměrování na
logfile
na konci je pro čistý výstup. Jinak stavový řádek zpv
se smíchá s výstupem zrm -v
. Bonus:budete mít záznam o tom, co bylo smazáno. Ale pozor, soubor bude obrovský. Můžete také přesměrovat na/dev/null
pokud protokol nepotřebujete.
Chcete-li získat počet souborů, můžete použít tento příkaz:
$ find dirname | wc -l
To také může trvat dlouho, pokud existují miliardy souborů. Můžete použít pv
zde také uvidíte, kolik se to napočítalo
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
Zde se píše, že napočítaní 278k souborů trvalo 4 sekundy. Přesný počet na konci (278044
) je výstup z wc -l
.
Pokud nechcete čekat na počítání, můžete počet souborů uhodnout nebo použít pv
bez odhadu:
$ rm -rv dirname | pv -l > logfile
Takto nebudete mít žádný odhad na dokončení, ale alespoň uvidíte, kolik souborů již bylo smazáno. Přesměrujte na /dev/null
pokud soubor protokolu nepotřebujete.
Nitpick:
- opravdu potřebujete
sudo
? - obvykle
rm -r
stačí mazat rekurzivně. není potřebarm -f
.