Hallo Artur, hallo Leute, Am Mittwoch, 28. Dezember 2005 18:33 schrieb Artur Cichosz:
Gibt es eine Befehlskombination mit der ich den Inhalt eines Verzeichnisses nach Verzeichnissen mit einem bestimmten Namen durchsuchen kann und diese auch gleich rekursiv löschen?.
Konkret will ich eine lokale SVN-Kopie (analog wie eine CVS-Kopie) von den Repository-Informationen befreien - also alle verzeichnisse ".svn" rekursiv löschen.
Habe in meiner Naivität versucht dies durch folgende Befehlskette zu erreichen
cd /directory find ./ -name ".svn" | rmdir
Hat nicht funktioniert.
Klar, weil rmdir seine Parameter nicht auf STDIN erwartet. Besser funktionieren müsste (ungetestet) find -name ".svn" -type d -depth -print0 | xargs -0 rmdir Erklärung: find - ./ ist bei find Voreinstellung und kann auch weggelassen werden - -type d sorgt dafür, dass nur Verzeichnisse gefunden werden - -depth dreht die Ausgabereihenfolge um - das heißt, Unterverzeichnisse werden zuerst gelistet. Gerade bei rmdir kann sowas wichtig sein. - -print0 trennt die einzelnen Namen mit einem Nullbyte statt Leerzeichen und verhindert so Ärger mit Verzeichnisnamen, die Leerzeichen enthalten find kennt noch mehr Parameter - guck einfach mal in man find ;-) xargs gibt die per STDIN erhaltenen Werte als Parameter an rmdir weiter (also "rmdir eins zwei drei"). Das -0 teilt xargs mit, dass die einzelnen Werte mit einem Nullbyte (siehe oben) getrennt sind. Gruß Christian Boltz --
Gibt es hier in dieser Liste eigentlich ausser mir noch jemanden ?? Nein, aber es laufen einige Robots, die Traffic vortäuschen. Ich bin auch einer davon. [Tobias Korb und Thorsten Haude in suse-programming]