find
Příkaz je primárním nástrojem pro operace rekurzivního systému souborů. Použijte -type d
výraz, který řekne find
zajímá vás hledání pouze adresářů (a ne obyčejných souborů). GNU verze find
podporuje -empty
test, takže
$ find . -type d -empty -print
vytiskne všechny prázdné adresáře pod vaším aktuálním adresářem.
Použijte find ~ -…
nebo find "$HOME" -…
založit vyhledávání na vašem domovském adresáři (pokud to není váš aktuální adresář).
Po ověření, že se jedná o výběr správných adresářů, použijte -delete
pro smazání všech shod:
$ find . -type d -empty -delete
Můžete zavolat rmdir
v každém adresáři od rmdir
smaže adresář pouze v případě, že je prázdný:
find "$HOME" -type d -exec rmdir {} + 2>/dev/null
Pokud chcete vytisknout i odstraňované adresáře, budete muset zkontrolovat, zda nejsou prázdné:
find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \;
Zde je čistý příklad bash (verze 4 nebo vyšší):
shopt -s globstar
for dir in **/; do
files=("$dir"/*)
[[ ${files[@]} ]] || rmdir -v "$dir"
done