leere Verzeichnisse finden

O

onlineuser

Mitglied
Hi,

wie kann ich schnell und effektiv alle Unterverzeichnisse durchgehen und die leeren Verzeichnisse rausfinden bzw. löschen?

Liebe Grüsse.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

hab mir mal das zusammengaut. Einen eigenen Befehl dafür wird es wohl nicht gebe, oder?

#!/bin/bash

for i in `find ./test -type d
do
test=$(ls $i 2>/dev/null | wc -l)
#echo $test
if [ "$test" -eq 0 ]; then
rmdir $i
fi
done

Liebe Grüsse.
 
Zuletzt bearbeitet:
Hi,

Mein Vorschlag wäre:
Code:
find /pfad/ -type d -exec rmdir -p {} 2>/dev/null \;

Gruß Daniel
 
Zuletzt bearbeitet:
Hallo
Geht solange gut, wie keine Leerzeichen vorkommen.
Code:
find -depth -type d -links 2 -print0 | xargs -0r rmdir 2>/dev/null
Behebt das Problem.
-depth dreht die Suchreihenfolge um, steigt von oben nach unten.
Deshalb reicht hier rmdir.
Mit GNU find geht es auch mit der Option -empty

Code:
find -depth -type d -empty -exec rmdir "{}"  \;
Gruß Wolfgang
 
Hallo :)
Ich muss diesen Thread noch mal aufgreifen.
Folgender Aufruf:
Code:
find /home/gerrit/scripttest/ -depth -type d -empty -exec rmdir {} +
Dann werden mir nur die untersten leeren Verzeichnisse gelöscht. Aber nicht alle unterhalb von "scripttest".

Hat da jemand eine Idee?


Danke euch schon mal! :)
Gruß
Gerrit
 

Anhänge

  • vorher.jpg
    vorher.jpg
    45,3 KB · Aufrufe: 12
  • nachher.jpg
    nachher.jpg
    58,8 KB · Aufrufe: 12
So wie Wolfgang geschrieben hat funktionierts doch:
Code:
find /home/gerrit/scripttest/ -depth -type d -empty -exec rmdir {} \;
 
So wie Wolfgang geschrieben hat funktionierts doch:
Code:
find /home/gerrit/scripttest/ -depth -type d -empty -exec rmdir {} \;

Jou, da hast du Recht :)
Danke!
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Ich muss da noch mal eine Frage anhängen.
Ich verstehe das aus den man-Pages nicht so richtig.
Was bedeutet bei den Befehlen das + am Ende, bzw. das \; ?? :hilfe2:

Vielleicht kann das jemand kurz zusammenfassen?!
Danke für eure Hilfe! :)

Gruß
Gerrit
 
Zuletzt bearbeitet:
Hi,

Ich verstehe das aus den man-Pages nicht so richtig.
Was bedeutet bei den Befehlen das + am Ende, bzw. das \; ?

ganz einfach: Bei dem Semikolon wird der exec Befehl fuer jede gefundene Datei einzeln ausgefuehrt, aber wenn du das Plus Zeichen benutzt, werden die gefundenen Dateien der Reihe nach fuer {} eingesetzt, und der Befehl wird nur einmal ausgefuehrt.

Probier beides doch einfach mal mit -exec echo, dann duerfte das schnell klar werden.

mfg,
bytepool
 
Zuletzt bearbeitet:
...ganz einfach: Bei dem Semikolon wird der exec Befehl fuer jede gefundene Datei einzeln ausgefuehrt, aber wenn du das Plus Zeichen benutzt, werden die gefundenen Dateien der Reihe nach fuer {} eingesetzt, und der Befehl wird nur einmal ausgefuehrt.

Probier beides doch einfach mal mit -exec echo, dann duerfte das schnell klar werden.l

Vielen Dank! :)
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

Shell Skript beschleunigen

verzeichniss suche funktioniert nicht

skript zum löschen doppelter dateien

Hilfe bei Scriptanpassung für VMWare 5.1 HA und USV Shutdown

Zurück
Oben