Freeed91 Geschrieben 24. Juli 2012 Teilen Geschrieben 24. Juli 2012 Hi Leute, habe als kleine Uebungsaufgabe verschiedene Files (bei mir .core) rekursiv in meinem Homeverzeichniss zu suchen und zu löschen. habe folgendes Skript entwickelt for i in find ~/Uebung \*.core do rm $i 2> /dev/null done [/PHP] auf Ordnerebene auf der das Skript ausgeführt wird funktioniert es tadellos jedoch fehlt der rekursive Durchgang. Im Internet habe ich mich informiert und da heißt es das FIND standartmäßig rekursiv arbeitet. jedoch löscht er Dateien nicht wenn sie unterhalb von ~/Uebung liegen =( hoffe ihr könnt mir bei diesem dämlichen Problem helfen. Gruß Freeed Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tygath Geschrieben 24. Juli 2012 Teilen Geschrieben 24. Juli 2012 Hallo, so wie du find aufrufst, kann das gar nicht funktionieren! versuchs mal mit find ~/Uebung -name "*.core" Und wenn was nicht funktioniert ist es ratsam, nicht die Fehler wegzufiltern ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Freeed91 Geschrieben 24. Juli 2012 Autor Teilen Geschrieben 24. Juli 2012 immernoch nicht das gewünschte Ergebnis Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 24. Juli 2012 Teilen Geschrieben 24. Juli 2012 Hi, du musst Backticks benutzen, wenn du möchtest dass die Ausgabe eines Befehls als Parameter oder Variable genutzt werden kann: for i in `find ~/Uebung *.core` do rm $i 2> /dev/null done Vorsicht: Bei einem rm Befehl würde ich mir immer vorher die Ausgabe anzeigen lassen, damit du auch genau weisst was er löscht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Juli 2012 Teilen Geschrieben 24. Juli 2012 man find UNIX man pages : find () ACTIONS -delete Delete files; true if removal succeeded. If the removal failed, an error message is issued. Use of this action automatically turns on the '-depth' option. -exec command ; Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of ';' is encountered. The string '{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a '\') or quoted to protect them from expansion by the shell. See the EXAMPLES sec- tion for examples of the use of the '-exec' option. The speci- fied command is run once for each matched file. The command is executed in the starting directory. There are unavoidable security problems surrounding use of the -exec option; you should use the -execdir option instead. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 24. Juli 2012 Teilen Geschrieben 24. Juli 2012 Hi, ähem, ja, die Syntax ist natürlich auch noch wichtig. Denn wenn du meine Version des Skriptes jetzt 1:1 so kopiert und ausgeführt hättest, kannst du nur hoffen dass du ein Backup von dem System hast. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Freeed91 Geschrieben 24. Juli 2012 Autor Teilen Geschrieben 24. Juli 2012 dankesehr für die ganzen Antworten, der Tipp mit den `` hat wunderbar funktioniert auch ohne das System zu grillen^^ Danke euch allen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Juli 2012 Teilen Geschrieben 24. Juli 2012 man braucht weder eine for Schleife noch die Backticks, siehe die Dokumentation zu find Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dano0b Geschrieben 27. Juli 2012 Teilen Geschrieben 27. Juli 2012 um es noch einmal zu verdeutlichen: find ~/Uebung -name "*.core" -delete es muss nicht immer eine schleife her... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 29. Juli 2012 Teilen Geschrieben 29. Juli 2012 man braucht weder eine for Schleife noch die Backticks, siehe die Dokumentation zu find Vorallem sind Backticks unleserlich $() tuts auch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.