hi,
ich will folgendes mit einem Einzeiler tun: Ausgehend vom aktuellen Verzeichnis sind alle Unterverzeichnisse mit dem Namen "save" zu finden und alles was IN DIESEN "save"-verzeichnissen ist, soll gelöscht werden. Die "save"-verzeichnisse selbst sollen erhalten bleiben.
BTW: Wie ich das mit mehreren Schritten hinbekomme ist mir klar, ich will eigentlich eine Eizeiler mit find ... -exec ... haben und ohne Pipes. Irgendwas pfiffiges halt, nicht so ne Lösung wie meine ganz unten :-)
Was ich probiert habe: 1.) find . -name save -type d ./SUNWdtdem/save ./SUNWdtdst/save ./SUNWdtezt/save ./SUNWdthe/save ./SUNWdthed/save ...
--> ok, das sind erstmal die verzeichnisse, die geleert werden sollen. Jetzt müsste also beispielsweise "rm -fr ./SUNWdtdem/save/*" gemacht werden.
2.) find . -name save -type d -exec ls -l {}/save/* ; {}/save/*: No such file or directory {}/save/*: No such file or directory {}/save/*: No such file or directory ...
--> hab nur 'ls -l' statt 'rm -fr' genommen um mir nicht ins Knie zu schiessen. Das Problem ist jedenfalls, daß hinter dem {} ein Leerzeichen kommen muss, damit es von find mit dem gerade gefundenen "Ding" ersetzt wird. So kann man natürlich keine Pfade zusammenbauen, wie es es bräuchte. Any hints?
Reinhard
PS: ich habs so gemacht: find . -name save -type d | while read i; do rm -fr $i/*; done Das ist zwar noch nicht sicher bei Leerzeichen im Namen, die konnte ich aber zum Glück ausschliessen. Aber irgendwie gefällt mir das nicht :)
Am Mit, 06. Jun 2001 03:33:12 +0200, schrieb Reinhard Foerster:
hi,
ich will folgendes mit einem Einzeiler tun: Ausgehend vom aktuellen Verzeichnis sind alle Unterverzeichnisse mit dem Namen "save" zu finden und alles was IN DIESEN "save"-verzeichnissen ist, soll gelöscht werden. Die "save"-verzeichnisse selbst sollen erhalten bleiben.
was hältst Du von:
find . -path '*/save/*' -type f -exec rm -rf '{}' ; Falls Du auch noch die SAVe oder saVE - Verzeichnisse löschen willst, nimm doch find . -ipath '*/save/*' -type f -exec rm -rf '{}' ;
Für weitere Spielereien siehe "info find".
On Wed, Jun 06, 2001 at 04:22:52PM +0200, Tobias Schlemmer wrote:
was hältst Du von:
find . -path '*/save/*' -type f -exec rm -rf '{}' ;
nicht sonderlich viel.
$ find . -path '*/save/*' -type f find: bad option -path find: path-list predicate-list Exit 1 $
Ich verlasse mich nur sehr ungern auf solche GNU-only Sachen.
Reinhard
On Wed Jun 06, 2001 at 16:54:58 +0200, Reinhard Foerster wrote:
Ich verlasse mich nur sehr ungern auf solche GNU-only Sachen.
$ uname -r -s SunOS 5.7 $ /bin/find . -name save -exec sh -c 'rm -rf $0/*' '{}' ;
Das hat aber Probleme mit Leerzeichen etc.
Adam
On Wed Jun 06, 2001 at 18:13:20 +0200, Adam Lackorzynski wrote:
On Wed Jun 06, 2001 at 16:54:58 +0200, Reinhard Foerster wrote:
Ich verlasse mich nur sehr ungern auf solche GNU-only Sachen.
$ uname -r -s SunOS 5.7 $ /bin/find . -name save -exec sh -c 'rm -rf $0/*' '{}' ;
Das hat aber Probleme mit Leerzeichen etc.
Das nicht:
$ /bin/find . -name save -exec sh -c 'rm -rf "$@"/*' . '{}' ;
Dank an Tobias fuer den Denkanstoss! :-)
Adam
lug-dd@mailman.schlittermann.de