Hallo Ich versuche mit folgender Anweisung in einem Bash-Script leere Verzeichnisse zu finden und sie zu löschen: find /path/to/recycle_bin/ -empty -type d -exec rm -vrf {} \; Ich möchte jedoch nur alle leeren Unterverzeichnisse von recycle_bin/ löschen und nicht /path/to/recycle_bin/ selber. Wie kann ich das find beibringen? Gemäss Manpage sollte doch find im angegebenen Pfad erst anfangen zu suchen, oder verstehe ich da etwas falsch? Besten Dank und Gruss P. Tritten
Pascal Tritten wrote:
find /path/to/recycle_bin/ -empty -type d -exec rm -vrf {} \;
Ich möchte jedoch nur alle leeren Unterverzeichnisse von recycle_bin/ löschen und nicht /path/to/recycle_bin/ selber.
Hi Pascal! Bei mir macht der von dir angegebene Befehl genau das. --- theide@linuxtest:~> find /home/theide/test -empty -type d /home/theide/test/test1 /home/theide/test/test2 /home/theide/test/test3 /home/theide/test/test4 /home/theide/test/test5 --- /home/theide/test erscheint nicht in der Liste. Gruß, tobi
Tobias Heide wrote:
Pascal Tritten wrote:
find /path/to/recycle_bin/ -empty -type d -exec rm -vrf {} \;
Ich möchte jedoch nur alle leeren Unterverzeichnisse von recycle_bin/ löschen und nicht /path/to/recycle_bin/ selber.
Hi Pascal!
Bei mir macht der von dir angegebene Befehl genau das.
--- theide@linuxtest:~> find /home/theide/test -empty -type d /home/theide/test/test1 /home/theide/test/test2 /home/theide/test/test3 /home/theide/test/test4 /home/theide/test/test5 ---
/home/theide/test erscheint nicht in der Liste.
Soweit funktioniert es bei mir auch, nur wenn jetzt bei einem zweiten Durchlauf des Skripts - wenn test1/ bis test5/ gelöscht wurden - das Verzeichnis /home/theide/test/ leer ist, wird es auch gelöscht (resp. in der Liste angezeigt) und das ist, was ich nicht möchte.
Gruß, tobi
Gruss Pascal
Pascal Tritten wrote:
Tobias Heide wrote:
Pascal Tritten wrote:
find /path/to/recycle_bin/ -empty -type d -exec rm -vrf {} \;
Ich möchte jedoch nur alle leeren Unterverzeichnisse von recycle_bin/ löschen und nicht /path/to/recycle_bin/ selber.
Hi Pascal!
Bei mir macht der von dir angegebene Befehl genau das.
--- theide@linuxtest:~> find /home/theide/test -empty -type d /home/theide/test/test1 /home/theide/test/test2 /home/theide/test/test3 /home/theide/test/test4 /home/theide/test/test5 ---
/home/theide/test erscheint nicht in der Liste.
Soweit funktioniert es bei mir auch, nur wenn jetzt bei einem zweiten Durchlauf des Skripts - wenn test1/ bis test5/ gelöscht wurden - das Verzeichnis /home/theide/test/ leer ist, wird es auch gelöscht (resp. in der Liste angezeigt) und das ist, was ich nicht möchte.
Hi Pascal, genügt das: find /path/to/recycle_bin/\* -empty -type d -exec rm -vrf {} \; ^^ ? HTH Jens
Gruß, tobi
Gruss Pascal
On Wed, 14 Jan 2004, Pascal Tritten wrote:
[...] Ich möchte jedoch nur alle leeren Unterverzeichnisse von recycle_bin/ löschen und nicht /path/to/recycle_bin/ selber. Wie kann ich das find beibringen?
Wir sprechen vom GNU-find (?). man -P "less +'/^ {7}-(min|max|)depth'" find "-depth" solltest Du ebenfalls anwenden, weil sonst durchaus ein Verzeichnis nicht gelöscht wird, obwohl alle leeren Unterverzeichnisse gelöscht wurden...
Gemäss Manpage sollte doch find im angegebenen Pfad erst anfangen zu suchen, oder verstehe ich da etwas falsch?
Du verstehst "da etwas falsch". Die Lektüre von "-mindepth" und "-maxdepth" hätte Dir alles gesagt. Ein find /tmp -maxdepth 1 -print | less -S hätte Dir zum einen gezeigt, dass "/tmp" als _erstes_ behandelt wird und zweitens, dass es _auch_ bearbeitet wird (sigh!). SCNR: Lesen bildet. Aber es war anscheinend mal wieder einfacher, die Angel in die Mailingsliste zu werfen... G Henning Hucke -- Eine Gesellschaft von Schafen muss mit der Zeit eine Regierung von Woelfen hervorbringen. -- Bertrand de Jouvenel
Henning Hucke wrote:
On Wed, 14 Jan 2004, Pascal Tritten wrote:
[...] Ich möchte jedoch nur alle leeren Unterverzeichnisse von recycle_bin/ löschen und nicht /path/to/recycle_bin/ selber. Wie kann ich das find beibringen?
Wir sprechen vom GNU-find (?).
ja
[..]
Also, gemäss Deinen Ausführungen muss der Befehl nun heissen: find /path/to/recycle_bin/ -empty -depth -mindepth 1 -type d -exec rm -vrf {} \; Und es funktioniert!! :)
SCNR: Lesen bildet. Aber es war anscheinend mal wieder einfacher, die Angel in die Mailingsliste zu werfen...
Darüber haben wir schon mal diskutiert und Du erwähnst es ja auch immer wieder... Ich weiss es jetzt, falle aber immer mal wieder rein, das kommt halt wenn man - wie in der heutigen Zeit des "nie-Zeit-Habens" üblich - Texte nur überfliegt ;-)
G Henning Hucke
Gruss und besten Dank P. Tritten
On Wed, Jan 14, 2004 at 12:25:17PM +0100, Pascal Tritten wrote:
find /path/to/recycle_bin/ -empty -depth -mindepth 1 -type d -exec rm -vrf {} \;
Nur mal so als Hint: find /path/to/recycle_bin/ -empty -depth -mindepth 1 -type d -print0 | xargs -0 rm -vrf ist deutlich schneller. -Namik-
On Wed, 14 Jan 2004, Pascal Tritten wrote:
[...]
SCNR: Lesen bildet. Aber es war anscheinend mal wieder einfacher, die Angel in die Mailingsliste zu werfen...
Darüber haben wir schon mal diskutiert und Du erwähnst es ja auch immer wieder... Ich weiss es jetzt, falle aber immer mal wieder rein, das kommt halt wenn man - wie in der heutigen Zeit des "nie-Zeit-Habens" üblich - Texte nur überfliegt ;-)
Ich kenne keine Situation (in der IT), in der es nicht mindestens mittelfristig sinniger ist, sich gegebenenfalls mal Zeit zu nehmen. Solche Sachen wie das find-Manual erst zu lesen, "wenn man es dringend braucht", ist nicht hilfreich. Man liest es nicht richtig, versteht etwas falsch, versteht etwas nicht und tippt fahrig ein. Was dabei rauskommt, ist eine Kommandozeile, die mehr löscht, als sie soll. Ich lese solche Sachen, wenn ich mit ihnen in Kontakt komme und sie mich interessieren. Zugegebenermassen des öfteren auch zuhause. Aber dadurch komme ich nicht in Schwulitäten, wenn es denn dann irgendwann doch mal eilig ist. Glaub mir, solche Sachen wie "aber es funktioniert doch" oder "es ist eilig", sind leicht totlich. Also bringt lieber den Mum auf, eurem Chef auch mal zu sagen, dass Problemlösungen durchaus auch mal länger dauern müssen, als er meint, Zeit geben zu können.
[...]
MfG Henning Hucke -- Morgen war Gestern der Tag nach Heute.
* On Wed, 14 Jan 2004 at 11:27 +0100, Pascal Tritten wrote:
Ich versuche mit folgender Anweisung in einem Bash-Script leere Verzeichnisse zu finden und sie zu löschen:
find /path/to/recycle_bin/ -empty -type d -exec rm -vrf {} \;
Ein wenig abseits von Deinem Problem, da hast Du eh schon genpgend Vorschläge erhalten: Du löscht hier mit den Optionen -r und -f, also "volle Pulle". Im Sinne von "möglichst defensiv arbeiten" (wer weiß, vielleicht trigerst Du ja einen doofen Bug in find, o.ä.) - wenn Du blos leere Verzeichnisse löschen möchtest, reicht ja eigentlich rmdir ohne weitere Parameter (naja, die zu löschenden Verzeichnisse schon). Sollte mal blöderweise in einem Verzeichnis noch was drinnen sein, dann löscht rmdir nicht. rm -rf würde gnadenlos abfahren damit. /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, Am Wed, 14 Jan 2004, Adalbert Michelic schrieb:
* On Wed, 14 Jan 2004 at 11:27 +0100, Pascal Tritten wrote:
Ich versuche mit folgender Anweisung in einem Bash-Script leere Verzeichnisse zu finden und sie zu löschen:
find /path/to/recycle_bin/ -empty -type d -exec rm -vrf {} \;
Ein wenig abseits von Deinem Problem, da hast Du eh schon genpgend Vorschläge erhalten: Du löscht hier mit den Optionen -r und -f, also "volle Pulle".
Im Sinne von "möglichst defensiv arbeiten" (wer weiß, vielleicht trigerst Du ja einen doofen Bug in find, o.ä.) - wenn Du blos leere Verzeichnisse löschen möchtest, reicht ja eigentlich rmdir ohne weitere Parameter (naja, die zu löschenden Verzeichnisse schon).
Sollte mal blöderweise in einem Verzeichnis noch was drinnen sein, dann löscht rmdir nicht. rm -rf würde gnadenlos abfahren damit.
Ergo: find /path/to/recycle_bin/ -depth -type d \ -empty -mindepth 1 -exec rmdir {} \; -dnh -- Chance is irrelevant. We will succeed. -- Seven of Nine
participants (7)
-
Adalbert Michelic
-
David Haller
-
Henning Hucke
-
Jens Luetkens
-
Pascal Tritten
-
suse-linux@nada.refused.cc
-
Tobias Heide