mdfind mit Regular Expressions

ratti

Aktives Mitglied
Thread Starter
Dabei seit
09.05.2004
Beiträge
1.521
Reaktionspunkte
56
Mahlzeit.

Ich möchte die Adobe-Fontcaches löschen. Diese Dateien heissen z.B.

FontCache/AdobeFnt04.lst
FontCache/AdobeFnt05.lst
FontCache/AdobeFnt06.lst
FontCache/AdobeFnt07.lst
FontCache/AdobeFnt08.lst
FontCache/AdobeFnt09.lst

, sind über die ganze Platte verstreut, die Ziffern ändern sich, und das ganze soll automatisiert auf vielen Rechner laufen, also automatisiert bombensicher sein.

Sowas hatte ich angedacht:

/usr/bin/mdfind -0 -onlyin /Users/ "kMDItemFSName == 'AdobeFnt*.lst'" | xargs -0 rm -vf

…leider… gibt es z.B. die Dateien…

AdobeFntComm.lst
AdobeFntSys.lst

…beim Acrobat 8 dabei, und die dürfen nicht gelöscht werden.

Hat jemand eine Idee, wie man sozusagen auf ~/AdobeFnt\d\d.lst/ matchen kann, ohne dass Dateinamen mit Zeilenumbrüchen oder ähnliche Scherze da reingrätschen? denn sonst würde ich grep nehmen. Oder kann man grep irgendwie beibringen, 0-Bytes als Zeilentrenner statt CR zu verwenden?

Gruß,
Jörg
 
Der Trick ist mit mdfind erst alle "AdobeFnt*.lst" zu suchen und dann die Liste mit grep -i -E und z.B. 'AdobeFnt[0-9].lst' die Liste der zu loeschenden Dateien aufzubereiten.

http://textsnippets.com/user/jv/tag/regex

hth

Gruss von IceHouse


Nach meinem Verständnis geht das in die Hose, wenn ein User einen Dateinamen anlegt, der z.B. einen Zeilenumbruch enthält. Deswegen haben find und xargs ja den modifier -print0 bzw. -0, und das scheint mdfind zu fehlen. 0-Bytes dürfen ja in Dateinamen nicht vorkommen, Zeilenumbrüche legt Apple sogar selbst an (Icon-Dateien).

Gruß,
Jörg
 
Zurück
Oben Unten