GNU/Linux >> Znalost Linux >  >> Linux

jak mohu rekurzivně odstranit prázdné adresáře v mém domovském adresáři?

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

Linux
  1. Jak rekurzivně odstranit adresáře pomocí zástupných znaků?

  2. Jak najít a odstranit prázdné adresáře a soubory v Unixu

  3. Jak rekurzivně vypsat všechny soubory a adresáře

  1. Jak najít domovský adresář uživatele na linuxu nebo unixu?

  2. Jak mohu vypočítat kontrolní součet md5 adresáře?

  3. Jak mohu rekurzivně kopírovat soubory podle přípony souboru a zachovat adresářovou strukturu?

  1. Jak odstranit uživatelské účty pomocí domovského adresáře v systému Linux

  2. Jak mohu provést rekurzivní chmod pouze v adresářích?

  3. Jak mohu najít nejstarší soubor ve stromu adresářů