• Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick
  • November - das bedeutet oftmals Herbstblues, grauer Himmel, Tristesse und Wetter, bei dem man gern im Warmen bleibt. Aber nur oftmals! Wir fordern Euch gern auf, gegen den Herbstblues anzukämpfen und hoffen, dabei hilft Euch unser aktuelles Monatsthema. Neugierig geworden? --> Zum Mitmachen bitte hier klicken

Unix oder Automator: Dateien mit bestimmten Zeichenkombinationen finden ...

  • Ersteller Ersteller willfried
  • Erstellt am Erstellt am

willfried

Gast
Hallo Forum,

Ein banales Problem: Ich habe auf meinem System in verschiedensten Ordnern Dateien der Form

abc.xyz.VERS1.123 bzw.
abc.xyz.VERS2.123.

Erzeugt wurden sie von einem Sync-Programm. Diese Dateien sollen gelistet bzw. gelöscht werden. Weder Automator noch unix Kommandos im Terminalmodus konnten mir helfen. Als Pattern haben ich "*.VERS1.*" benutzt, aber das funktioniert nicht. Die man-page von find war auch nicht hilfreich: möglicherweise interpretiere ich die Syntax falsch...

Was muss ich tun?
 
Versuch mal ein
Code:
find / -name "*.VERS1.*"
Das sollte alle derart benannten Dateien unterhalb von / finden. Oder das Wurzelverzeichnis entsprechend umbenennen. Wenn es bei Dir die richtigen Dateien auswirft, kannst Du die Ausgabe von find weiterverarbeiten (mit der -exec Option).
 
find funktioniert. Kann ich das Ergebnis zum Löschen nicht einfach zu rm durchreichen, etwa so:
find . -name "*.VERS?.*" | rm
 
Ja, das ginge. Probehalber würde ich es vielleicht zunächst mal so machen:
Code:
find . -name "*.VERS?.*" -ok rm {} \;
Dann würdest Du vor dem Löschen jeder Datei nochmal um Bestätigung gebeten. Die -ok Option schützt Dich vor eventuellen Fehleingaben beim Filter. Falls alles richtig erscheint, kannst Du immer noch mit Ctrl-C abbrechen und "radikal" über die Pipe rm rattern lassen (genauso wie Du schon gepostet hast). ;-)
 
willfried schrieb:
find funktioniert. Kann ich das Ergebnis zum Löschen nicht einfach zu rm durchreichen, etwa so:
find . -name "*.VERS?.*" | rm
find hat einen eigenen Löschbefehl, der ist bei vielen Dateien viel flinker.

find -x . -iname '*.VERS?.*' -delete

(Das -x beschränkt die Suche auf das eine Volume, das -iname ignoriert Gross/Kleinschreibung im Suchmuster.)
 
Super + Danke! Klappt bestens. Geht doch nichts über Unix ;-)
 
Vers1? Bibelverse oder wie? (sorry, musste sein...)