GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich leere Verzeichnisse in meinem Home-Verzeichnis rekursiv löschen?

Der find Der Befehl ist das primäre Werkzeug für rekursive Dateisystemoperationen. Verwenden Sie den -type d Ausdruck, um find mitzuteilen Sie möchten nur Verzeichnisse finden (und keine einfachen Dateien). Die GNU-Version von find unterstützt den -empty testen, also

$ find . -type d -empty -print

druckt alle leeren Verzeichnisse unterhalb Ihres aktuellen Verzeichnisses.

Verwenden Sie find ~ -… oder find "$HOME" -… um die Suche auf Ihr Home-Verzeichnis zu stützen (wenn es nicht Ihr aktuelles Verzeichnis ist).

Nachdem Sie überprüft haben, dass dies die richtigen Verzeichnisse auswählt, verwenden Sie -delete um alle Übereinstimmungen zu löschen:

$ find . -type d -empty -delete

Sie können rmdir anrufen in jedem Verzeichnis, seit rmdir löscht ein Verzeichnis nur, wenn es leer ist:

find "$HOME" -type d -exec rmdir {} + 2>/dev/null

Wenn Sie auch die gelöschten Verzeichnisse drucken möchten, müssen Sie überprüfen, ob sie leer sind:

find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \; 

Hier ist ein reines Bash-Beispiel (Version 4 oder höher):

shopt -s globstar
for dir in **/; do
   files=("$dir"/*)
   [[ ${files[@]} ]] || rmdir -v "$dir"
done

Linux
  1. Ausschlussverzeichnis finden?

  2. Wie lösche ich Verzeichnisse rekursiv mit Wildcard?

  3. Wie man alle Dateien und Verzeichnisse rekursiv auflistet

  4. Wie finde ich das Home-Verzeichnis eines Benutzers unter Linux oder Unix?

  5. Wie kann ich eine MD5-Prüfsumme eines Verzeichnisses berechnen?

So löschen Sie Benutzerkonten mit Home-Verzeichnis in Linux

So entfernen (löschen) Sie das Verzeichnis in Linux

So finden und löschen Sie leere Verzeichnisse in Linux

Alle Dateien in einem Verzeichnis rekursiv auflisten, einschließlich Dateien in Symlink-Verzeichnissen

bash findet Verzeichnisse

Wie kann ich dos2unix auf einem ganzen Verzeichnis ausführen?