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.

Antworten:


176

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

find . -name ".DS_Store" -delete

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


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.


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.


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

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!!


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.