Re: Ordner leeren (nicht löschen)

From: Timm Wimmers <timm(at)ticore.de>
Date: Mon, 04 Jun 2007 14:13:16 +0200

Oliver Fromme schrieb:

> find -d /masterfolder -depth +1 | xargs rm -r

Hallo Olli,

vielen Dank für deine hilfreichen Hinweise, insbesonders
"-print0" bei find und "-0" bei xargs.

Ist "-d" nicht gleichbedeutend wie "-depth" bzw. dessen
veraltete Schreibweise? Und ist "-depth" nicht auch für
die rückwärts gerichtete Bearbeitung von find
verantwortlich (also erst Verzeichnisinhalte und dann
erst das Verzeichnis selbst)?

Ich habe es jetzt dank der hier gemachten Hinweise
folgendermaßen hinbekommen:

find /masterfolder -mindepth 2 -depth -print0 | xargs -0 rm -r

Leert alle Verzeichnisse der ersten Ebene unterhalb von
/masterfolder. Möchte ich zudem noch die Dateien die
sich unterhalb von /masterfolder befinden löschen, muss
ich folgendes nachschieben.

find /masterfolder -maxdepth 1 -type f -print0 | xargs -0 rm

Das scheint zu funktionieren und wird von mir gerade
intensiv getestet. Allerdings habe ich noch nicht
rausgefunden, wie ich die Fehlermedlung von "rm"
 unterdrücke, wenn "find" nichtsfindet, also via "xargs"
ein leeres Argument liefert (kann ja sein, dass die
Verzeichnis der ersten Ebene schon leer waren).

> Das ganze hat übrigens wenig bis gar nichts mit der
> Shell zu tun, sondern ist einfach nur eine Sache des
> Zusammenspiels der beteiligten Tools (in diesem Fall
> find, xargs und rm), und die sind in ihren jeweiligen
> Manual-pages recht gut dokumentiert.

Ja es ist richtig, dass die Tools gut dokumentiert sind,
allerdings fehlt mir schlicht die Erfahrung um eben die
Zusammenhänge zu erkennen. Ich weiß ja meist nicht mal
genau nach welchem Parameter ich suchen soll, so hat
"-print0" dank deiner Hinweise quasi eine semantische
Sensation in meinem Kopf hervorgerufen. Ich musste
mir zur Beruhigung erstmal einen Kaffee holen.

> Shell-Wildcards ("*" usw.) sollte man in Skripten übri-
> gens vermeiden, soweit es geht. Damit kann man sich
> nämlich leichter in den Fuß schießen, als man meistens
> vermutet. (Tatsächlich fangen viele meiner eigenen
> Skripte mit »set -f« an, um Wildcards ganz auszuschal-
> ten, damit gar nicht erst etwas passieren kann.)

Dass Wildcards mitunter unschöne Seiteneffekte erzeugen,
habe ich mittlerweile auch festgestellt. Ich habe mir
angewöhnt immer zuerst (und für lange Zeit) auf
Dummydaten zu arbeiten, die das erwartete Szenario
möglichst genau abbilden. Ich werde die hier gemachten
Hinweise ganz bestimmt für meine weitere BSD-Laufbahn
berücksichtige. Ich schwör!

;-)

-- 
Timm
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 04 Jun 2007 - 14:14:19 CEST

search this site