Hallo,
ich würde gerne "fast" alles in einem Ordner löschen.
Das geht ja z.B. mit "rm -rf *". Nun soll aber eventuell ein File erhalten bleiben.
Kann man das irgendwie mit angeben, also lösche alles, ausser ....
Grüße,
Gordon
Hallo,
ich würde gerne "fast" alles in einem Ordner löschen.
Das geht ja z.B. mit "rm -rf *". Nun soll aber eventuell ein File erhalten bleiben.
Kann man das irgendwie mit angeben, also lösche alles, ausser ....
Grüße,
Gordon
Ich hab das mal in dieses Forum verschoben, weil ich denke das es hier besser aufgehoben ist.
Seine Rätselhaftigkeit wird nur durch seine Macht übertroffen!
Hallo Gordon,
ich würde das mit Hilfe eines Umwegs über find machen:
Das löscht dir alle Dateien, außer die, die <Dateiname> heißen; da könnte z.B. auchCode:find \! -type d \! -iname '<Dateiname>' -exec rm {} \;
stehen, d.h. alle Dateien die mit "wichtig" anfangen werden nicht gelöscht. Wenn du mehrere Suchmuster hast, dann kannst du die mit -a bzw. -o (De Morgansches Gesetz beachten!) zusammenschließen:Code:find \! -type d \! -iname 'wichtig*' -exec rm {} \;
Übrigens: der find-Aufruf oben arbeitet auch rekursiv, außerdem werden keine Verzeichnisse gelöscht.Code:find \! -type d \! ( -iname 'wichtig*' -o -iname 'auch_wichtig*' ) -exec rm {} \;
Gruß, Florian
Ein gebrechlich Wesen ist der X-Server.
Moin,
Kleine Korrektur: Die \ stehen an den falschen Stellen ;-) Die "!" brauchen nicht entwertet zu werden, dafür zwingend aber die "()" - sonst wird's eine Subshell, und die ist an der Stelle unpassend:Und wenn es schön optimal sein soll, dann statt der vielen rm-Forks lieber xargs:Code:find ! -type d ! \( -iname 'wichtig*' -o -iname 'auch_wichtig*' \) -exec rm {} \;JanCode:find ! -type d ! \( -iname 'wichtig*' -o -iname 'auch_wichtig*' \) -print | xargs rm
Ich bin pragmatisch:
Code:F=wichtigfile mv $f .. rm -Rf * mv ../$f .
MfG Peschmä
P.S. natürlich macht man das nicht wenn $f gross und .. auf einer andere Partition ist..., oder wenn man die Rechte nicht hat, oder wegen sonstwas
The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)
Oh, hab ich übersehen. Ich wusste auch nicht, dass man Ausrufezeichen nicht escapen muss, weil z.B. bei
die Meldung 'bash: !": event not found' kommt, das scheint aber einen anderen Hintergrund zu haben.Code:echo "Hallo!"
Wenn es noch optimaler werden soll, dann könnte man bei find auch -print0 und bei xargs -0 verwendenUnd wenn es schön optimal sein soll, dann statt der vielen rm-Forks lieber xargs:JanCode:find ! -type d ! \( -iname 'wichtig*' -o -iname 'auch_wichtig*' \) -print | xargs rm
Gruß, Florian
Ein gebrechlich Wesen ist der X-Server.
Moin,
und vor allem definiert man nicht GROSS F, um dann klein $f wegzumoven - dann isse nämlich futsch, die "wichtigfile" ;-)
Andere Partition sollte eigentlich für mv kein Problem mehr sein, die Einschränkung gabs IIRC früher in alten Unixen mal. So weit ich weiß, macht dann mv erst einen cp und dann einen rm.
Jan
EDIT: Ich hab gerade gesehen, dass bei Deiner Partitions-Geschichte ein "UND" stand - dann gebe ich Dir natürlich recht, würde ziemlich bremsen. Da der mv aus diversen Gründen schiefgehen kann, würde ich ihn immer so aufrufen: "mv $F .. || exit 1" - damit stelle ich sicher, dass der folgende rm nicht aufgerufen wird, wenn "wichtigfile" nicht in Sicherheit gebracht worden ist.
Geändert von jan61 (01-07-2008 um 20:23 Uhr)
Moin,
Das dürfte daran liegen, WIE die Shell interpretiert. In dem Fall ist die Krux, dassfunktioniert - erst mit den "" machst Du die Shell drauf aufmerksam ;-)Code:echo hallo! 'hallo!'
Stimmt, damit ist man auch die Sorge um Leerzeichen und anderes Geraffel in Dateinamen los.
Jan
The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)
Schon klar - ich auch, sonst könnte ja jeder kommen und einfach meine Scripts benutzen
The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)
Hallo an alle,
vielen Dank für die zahlreichen Mails.
Ich hatte leider vergessen, dass ich die Frage gestellt hatte...hab ich heute durch Zufall wieder entdeckt..;-)
Grüße,
Gordon
find kennt mittlerweile -delete
Lesezeichen