Wer Daten mit Windows- und Linux-Systemen austauscht, wird sie kennen, für alle anderen Mac-User bleiben sie unsichtbar: Resourcen-Dateien.

An sich eine sinnvolle Sache, manchmal jedoch ärgerlich, wenn man Daten auf andere Platformen rüberschiebt und sich (unerfahrene) Nutzer über doppelte und leere Dateien wundern. Order gar automatische Systeme abstürzen, weil sie nicht damit zu recht kommen.

Dafür habe ich mit Automator einen Dienst erstellt, welcher sich bequem über das Finder-Kontextmenü starten lässt und die gängigsten Resource-Dateien entfernt.

Vorsicht!
Anwendung auf eigene Gefahr. Hier wird via Bash der rm-Befehl angewendet. Ich übernehme keine Gewährleistug dafür, dass ich einen Fehler eingebaut habe oder dass durch gewisse Umstände Dateien gelöscht werden könnten, die eigentlich nicht gelöscht werden sollten und somit ggf. sogar das System unbrauchbar werden könnte.

Dienst erstellen

Der fertige Dienst steht hier zum Download zur Verfügung.
Nach dem Entpacken sollte ein Doppelklick ausreichen, um ihn dem System hinzuzufügen.
Wer lieber selbst bastelt: Automator öffnen und einen neuen Dienst erstellen.
 
Ganz oben "Dienst empfängt ausgewählte Ordner in Finder" auswählen und "Angegebene Finder-Objekte abfragen" von der Aktionen-Liste links reinziehen.

Danach ein "Apple Skript ausführen" reinziehen, denn ich will abfragen, ob nur der gewählte Ordner oder der gewählte Ordner samt Unterordnern bereinigt werden soll.
Das gestaltete sich letztendlich ziemlich tricky, sowohl die anfangs abgefragten Finder-Objekte, wie auch das Ergebnis des Apple-Skriptes an das Bash-Skript weiterzugeben.
Mit copy theBtn to the beginning of input konnte ich letztendlich das Ergebnis des AppleScript-Dialogs an bei der Liste der Finder-Objekte voranstellen (so dass es das erste Objekt im Array ist).

on run {input, parameters}
  if number of items in input is 0 then
    display dialog "Sie haben keine Objekte ausgewählt"
    erorr - 128
    end if
  set theDlg to display dialog "Entfernt alle Resourcen im gewählten Ordner und auf Wunsch in Unterordnern" buttons {"Abbrechen", "Nur dieser Ordner", "Dieser Ordner und Unterordner"} default button 3
  set theBtn to 0
  if button returned of theDlg is "Nur dieser Ordner" then set theBtn to "NO_SUBDIRS"
  if button returned of theDlg is "Dieser Ordner und Unterordner" then set theBtn to "WITH_SUBDIRS"
  if theBtn is 0 then error -128 -- Abbrechen geklickt. Abbrechen
  copy theBtn to the beginning of input
  return input
end run

Als nächstes benötigen wir eine "Shell-Skript ausführen"-Aktion (Eingabe übergeben "Als Argumente" rechts oben auswählen!).

SUBDIR_MODE=$1
shift # Ignoriert das 1. Argument im Folgenden

for f in "$@"
do
  #echo "$f" # Ein Ordnerpfad der Finder-Auswahl
  if [[ $SUBDIR_MODE == "NO_SUBDIRS" ]]; then
    rm "$f/._*"
    rm "$f/.DS_Store"
    rm "$f/Thumbs.db"
    fi
  if [[ $SUBDIR_MODE == "WITH_SUBDIRS" ]]; then
    find "$f" -name '._*' -exec rm -rf {} \;
    find "$f" -name '.DS_Store' -exec rm -rf {} \;
    find "$f" -name 'Thumbs.db' -exec rm -rf {} \;
    fi
done

Eigentlich sollten wir hier in $@ ein Argumente-Array mit Ordnerpfaden, die im Finder gewählt waren, erhalten.
Im vorangegangenen Appleskript habe ich noch ein weiteres Argument hinzugefügt, in welchem entweder NO_SUBDIRS oder WITH_SUBDIRS steht, um nun verarbeiten zu können, ob die Resourcen im aktuellen Ordner oder im aktuellen Ordner samt Unterordnern entfernt werden sollen.
Dies ist das erste Argument, welches ich in die Variable SUBDIR_MODE übernehme und mit allen folgenden Argumenten eine Schleife durchlaufe (falls mehrere Ordner im Finder gewählt sind).

Thumbs.db ist übrigens keine Mac-Resource-Datei, sondern eine Windows-Resorce-Datei, die mich oft nervt. Diese lasse ich hier auch gleich verschwinden.