Wurden Resourcen früher noch in den Dateien selbst in einem Resource-Header festgehalten, sind sie seit MacOS X in separate (normalerweise unsichtbare) Dateien ausgelagert, die den selben Dateinamen mit einem vorangestellten ._ haben.

Normalerweise stören diese Dateien nicht, können aber einerseits zur Verwirrung beitragen, wenn man einem Windows-User einen Stapel Dateien auf seine Festplatte kopiert oder aber auch arg nerven, wenn man Filme und Musik auf einen Datenträger kopiert, diesen an sein TV-Gerät hängt und dann alle Dateien doppelt vorhanden sind und jede zweite Datei 0kB groß ist und sich nicht abspielen lässt – das sind dann nämlich die Mac-Resourcen-Dateien.

Wie gesagt: Am Mac stören die Dateien nicht. Sie sind sogar notwendig um Einstellungen wie Etiketten, Datei-Icons und Fenster-Voreinstellungen irgendwo speichern zu können.

Praktisch ist eine Software wie Blue Harvest. Hier lassen sich bestimmte Wechseldatenträger wie externe Festplatten und USB-Sticks, aber auch Netzwerkfestplatten angeben, die automatisch "sauber gehalten" werden. Das heißt, dass Blue Harvest hier das Anlegen von Resource-Dateien verhindert (oder sie gleich wieder löscht).

Sich extra eine Software zu kaufen / zu installieren, nur weil man all paar Monate mal ein paar Daten an einen Windows-/Unix-User weitergeben will ohne ihm unnötigen Datenwulst mitzuliefern, muss natürlich nicht sein.
Mit folgendem Bash-Skript kann man alle Resource-Dateien vom externen Datenträger löschen, nachdem man die Daten drauf kopiert hat:

#!/bin/bash

DIR=$1

if [[ "$DIR" == "" ]];
then
  echo "  FEHLER: Kein Verzeichnis angegeben."
  echo "  Dieses Skript entfernt Resource-Dateien (alle Dateien, die mit '._' beginnen) aus Verzeichnissen."
  echo "  Es geht hierbei alle Verzeichnisse rekursiv vom angegebenen Verzeichnis aus durch."
  exit 1
fi

if [ ! -d "$DIR" ];
then
  echo "  FEHLER: $DIR ist kein Verzeichnis"
  exit 1
fi

DIR=${DIR%/} # Slash am Ende entfernen (falls vorhanden)
IFS=$'\n'

for f in $(find $DIR -name '._*'); do
  filename=${f##*/}
  if [[ $filename != "" ]]; then
    echo $f
    rm $f
    fi
  done
for f in $(find $DIR -name '.DS_Store'); do
  filename=${f##*/}
  if [[ $filename != "" ]]; then
    echo $f
    rm $f
    fi
  done

Anwendung:

./skript.sh /Volumes/Austauschplatte

In sämtlichen Verzeichnissen des Datenträgers Austauschplatte werden alle Dateien, die mit einem ._ beginnen und alle .DS_Store-Dateien, gelöscht.
Das kann je nach Anzahl der Verzeichnisse natürlich eine Weile dauern.

Weitere Resource-Dateien/-Verzeichnisse, die es auf Windows- und Unix-Systemen nicht benötigt, werden allerdings nicht entfernt. Natürlich kann das Skript bei Bedarf dementsprechend angepasst werden.
Beispiele wären:
.Spotlight-V100 .TemporaryItems .fseventsd