Löschen Sie .DS_STORE-Dateien im aktuellen Ordner und in allen Unterordnern über die Befehlszeile auf dem Mac

80

Ich verstehe ich verwenden kann , find . -name ".DS_Store"um alle die .DS_Store Dateien zu finden im aktuellen Ordner und alle Unterordner. Aber wie kann ich sie gleichzeitig von der Kommandozeile löschen? Ich fand es wirklich ärgerlich, zu allen Ordnern hin und her zu wechseln und sie einzeln zu löschen.

Aaron Zeng
quelle

Antworten:

176

findkann das tun. Fügen Sie einfach hinzu -delete:

find . -name ".DS_Store" -delete
Chaos
quelle
3
Sie müssen die Groß- und Kleinschreibung des Dateinamens auf ".DS_Store" festlegen . Wenn ".DS_STORE" verwendet wird, funktioniert dies nicht, da bei Dateinamen die Groß- und Kleinschreibung beachtet wird.
Amr Lotfy
1
@ AmrLotfy Das ist eigentlich nicht wahr, das Standard-Mac-Dateisystem unterscheidet nicht zwischen Groß- und Kleinschreibung
Andere
10
Für zusätzliche Vorsicht schließe ich normalerweise Verzeichnisse wie dieses aus:find . -name '.DS_Store' -type f -delete
xApple
Ich würde diese Zeile zu meinem .bashrc_profile hinzufügen, um die Dateien jedes Mal zu bereinigen, wenn ich die Shell starte. Wie mache ich es weniger wortreich oder total leise?
Danijel
@Danijel im Allgemeinen können Sie 2>/dev/null 1>/dev/nulleinen Unix-Befehl anhängen , um ihn leise zu machen.
Samy Bencherif
19
find . -name ".DS_Store" -print -delete

Dadurch werden alle .DS_Storeim aktuellen Pfad genannten Dateien gelöscht und gleichzeitig ihre relativen Pfade angezeigt

Kirill Malakhov
quelle
3
@kelin uh, wie ist das eine Nur-Link-Antwort, wenn es keinen Link gibt?
pppery
1
@ppperry, dies ist eine automatische Nachricht aus der Überprüfung. Ich habe dafür gestimmt, Ihre Antwort zu löschen, da sie im Vergleich zur akzeptierten Antwort nichts Wichtiges hinzufügt.
Kelin
3

Der beste Weg, dies sauber zu machen, ist:

find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -delete -print 2>&1 | grep -v "Permission denied"

Dadurch werden die Dateien entfernt, Fehler "Berechtigung verweigert" ausgeblendet (während andere Fehler beibehalten werden) und eine saubere Liste der entfernten Dateien ausgedruckt.

Frankyw
quelle
2

Sie können auch erweitertes globbing ( **) verwenden:

rm -v **/.DS_Store

in zsh, bash 4 und ähnlichen Shells (falls nicht aktiviert, aktivieren durch :) shopt -s globstar.

Kenorb
quelle
1

Erstellen Sie eine neue Datei mit einem Texteditor, kopieren Sie den folgenden Text, fügen Sie ihn ein, speichern Sie ihn mit der Dateierweiterung ".sh" und öffnen Sie die Datei mit Terminal. Stellen Sie sicher, dass der Texteditor den Rohtext tatsächlich speichert und die Datei nicht als Rich-Text-Format-Datei oder ein anderes Text-Dateiformat mit zusätzlichen Informationen in der Datei speichert.

#!/bin/bash
echo -e "\nDrag a folder here and press the Enter or Return keys to delete all files whose names begin with a dot in its subfolders:\n"
read -p "" FOLDER
echo -e "\nThe following files will be deleted:\n"
find $FOLDER -name ".*"
echo -e "\nDelete these files? (y/n): "
read -p "" DECISION
while true
do
    case $DECISION in
        [yY]* ) find $FOLDER -name ".*" -delete
        echo -e "\nThe files were deleted.\n"
        break;;
        [nN]* ) echo -e "\nAborting without file deletion.\n"
        exit;;
        * ) echo -e "\nAborting without file deletion.\n"
        exit;;
    esac
done
Sparky
quelle
1

Hier erfahren Sie, wie Sie die .DS_Store-Datei rekursiv entfernen

Terminal öffnen Wechseln Sie in der Befehlszeile zum Speicherort des Ordners, in dem sich alle Dateien und Ordner befinden: cd to / your / directory

Geben Sie schließlich den folgenden Befehl ein: - find. -name '.DS_Store' -Typ f -delete

Drücken Sie Enter

Prost!!

Tejinder
quelle
0

Dies war nicht gerade die Frage, aber wenn Sie das Verzeichnis tatsächlich ohne diese .DS_STOREDateien komprimieren möchten , ist dies ein Vergnügen ...

zip -r -X archive_name.zip folder_to_compress
Shramee
quelle