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:
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.
Beispiele wären:
.Spotlight-V100 .TemporaryItems .fseventsd
Erstellt am: 16.05.2016 unter den Kategorien Grundlagen Aufgebohrt . | Kommentieren |