Hat jemand ein Mac Terminal-Skript zum Entfernen versteckter Dateien?

10

Meine Autoradio kann Musik von USB- Sticks abspielen , daher habe ich nach dem Kopieren von MP3s aus einer iTunes-Wiedergabeliste gefragt . Das hat gut funktioniert, aber meine Stereoanlage hat die MP3-Dateien nicht abgespielt. Schließlich habe ich das Flash-Laufwerk in meinen Arbeitscomputer unter Windows 7 eingelegt und das Problem festgestellt: Es wurden auch einige versteckte Dateien im Format ._[filename].mp3geladen.

Ich weiß, dass Sie in Windows Dateien basierend auf Attributen löschen können, und ich habe mich gefragt, ob Sie dies auch in Terminal tun können. Möglicherweise mit einem Skript, das ich mit dem Volume als Parameter ausführen kann?

Kanadischer Luke
quelle
Ich hatte genau das gleiche Problem. Wenn die ._-Dateien dort wären, würde meine Stereoanlage "Bad Media" sagen, was völlig falsch war. Es würde die richtig benannten Dateien abspielen, sich aber über jede ._-Datei beschweren. Ich habe eine Weile gebraucht, um zu überprüfen, ob die Medien nicht schlecht waren, die Auto-Stereoanlage!
Eric
Aber es ist nicht die Schuld der Stereoanlage, die sie nervt ... Lol. Ich habe es einfach in meinen Win7-Computer gesteckt, um Musik bei der Arbeit einzuschalten, und alle gesehen: Eine Reihe versteckter Dateien mit jeweils 4 KB
Kanadier Luke
Die Auto-Stereoanlage sollte diese Dateien ignorieren. In Ihrem Fall enthalten sie keine notwendigen Informationen. Aber es ist überall das gleiche Problem. Mein DLNA Media Player zeigt diese auch beim Surfen an.
Slhck

Antworten:

21

Diese Dateien sind in OS X ausgeblendet, da sie mit beginnen .und daher standardmäßig nicht im Finder angezeigt werden. Abgesehen davon ist in diesen Dateien kein spezielles Attribut festgelegt.

Ein sehr vereinfachter Ansatz wäre, alle Dateien zu löschen, die mit einem Punkt und einem Unterstrich beginnen:

find /Volumes/<your-volume-name> -name '._*' -type f -delete

Sicherheitshinweis: Führen Sie dies aus, ohne -deletezu sehen, welche Dateien entfernt werden. Und tun Sie dies niemals auf Ihrem gesamten Mac HD, sondern nur auf Ihrem USB-Laufwerk.


Für einige zusätzliche Informationen: Diese Dateien werden als "Resource Forks" bezeichnet und enthalten manchmal Informationen, die Sie nicht löschen möchten. In Ihrem Anwendungsfall sollte dies jedoch in Ordnung sein. Sie können die Erstellung dieser Dateien mit BlueHarvest dauerhaft deaktivieren . Es gibt auch eine App, die behauptet, Volumes zu bereinigen, aber ich habe sie nicht ausprobiert und sie ist Beta- Version . Verwenden Sie sie daher mit Vorsicht: Hidden Cleaner .

slhck
quelle
Wusste nicht, dass ... Gut zu wissen. Ich werde das heute Abend versuchen, wenn ich nach Hause komme, und dann deine Antwort markieren. Danke
Kanadier Luke
8

Eine weitere Lösung, die für mich (MacOS 10.6.8) im Terminaltyp funktioniert hat:

dot_clean "/Volumes/<your-volume-name>"
shershen
quelle
3

Ich hatte genau das gleiche Problem mit meiner Auto-Stereoanlage, 1 Datei / 2 ist nicht abspielbar, da der Player der Ansicht ist, dass die von MAC OS erstellte Punktdatei eine Musikdatei ist ... Dann fand ich diesen Beitrag wirklich nützlich, danke.

Also komme ich jetzt mit einer verbesserten und kostenlosen Lösung für Mavericks zurück:

  1. Erstellen Sie eine Automator-Anwendung, um ein AppleScript-Skript auszuführen
  2. Verwenden Sie dieses Skript:

    on run {input, parameters}
        try
            tell application "Finder" to set allDrives to the name of every disk whose local volume is true and startup is false
            set driveName to {choose from list allDrives with title "DiskCleaner" with prompt "Disk to Clean and Eject:" OK button name "Clean and Eject" cancel button name "Abort"} as text
            set getDriveIdentifier to "diskutil info " & quoted form of driveName & " | grep Ident | awk '{print $3}'"
            set driveIdentifier to do shell script getDriveIdentifier
            try
                do shell script "find /Volumes/" & quoted form of driveName & " -name '.DS_Store' -type f -delete"
                do shell script "find /Volumes/" & quoted form of driveName & " -name '.FBC*' -type f -delete"
                do shell script "find /Volumes/" & quoted form of driveName & " -name '._*' -type f -delete"
                do shell script "rm -rf /Volumes/" & quoted form of driveName & "/.{,_.}{fseventsd,Spotlight-V*,Trashes}"
                display notification "Disk Cleaned"
            on error
                try
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '.DS_Store' -type f -delete" with administrator privileges
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '.FBC*' -type f -delete" with administrator privileges
                    do shell script "sudo find /Volumes/" & quoted form of driveName & " -name '._*' -type f -delete" with administrator privileges
                    do shell script "sudo rm -rf /Volumes/" & quoted form of driveName & "/.{,_.}{fseventsd,Spotlight-V*,Trashes}" with administrator privileges
                    display notification "Disk Cleaned"
                on error
                    display notification "Can't Clean, Permission Denied"
                end try
            end try
            delay 1
            try
                do shell script "diskutil eject " & driveIdentifier
                display notification "Disk Ejected"
            on error
                display notification "Can't Eject, Disk in Use"
            end try
        on error
            display notification "No Disk to Clean and Eject"
        end try
    end run
    
  3. Speichern Sie die Anwendung beispielsweise als DiskCleaner.app

In diesem Skript werden Sie aufgefordert, das zu reinigende und auszuwerfende USB-Laufwerk auszuwählen. Anschließend wird das USB-Laufwerk bereinigt (versucht es mit Administratoranmeldeinformationen, wenn dies mit den aktuellen fehlgeschlagen ist), und wenn möglich ausgeworfen.

Natürlich gibt es noch Verbesserungspotenzial, ich habe dieses Skript für mich selbst gemacht!

Sie haben auch die Flexibilität, Codezeilen hinzuzufügen, um mehr Dateien zu bereinigen.

Genießen!

RSelec
quelle
Dies ist wirklich nützlich. Würden Sie in Betracht ziehen, den vollständigen Automator-Workflow zu veröffentlichen?
Konrad
Super, vielen Dank! Funktioniert für mich unter OSX10.12.1, wenn ich {input, parameters}aus Zeile 1 entferne (nur verlassen on run). @Konrad: Ich habe 'Script Editor' geöffnet, die oben genannte Bearbeitung vorgenommen und in / Applications als App gespeichert. Job erledigt. Ich liebe es, genau zu sehen, was passiert, was bei anderen kostenlosen Lösungen schwieriger ist.
ptim
Vielen Dank. Ich habe dein Skript ausprobiert. Als ich es über die Automator-App ausführte, um es zu testen, klickte ich im Dialogfeld zur Festplattenauswahl auf die Option "Abbrechen" und erhielt immer noch eine Sudo-Eingabeaufforderung und eine Meldung, dass die Festplatte nicht ausgeworfen werden konnte. Ich denke, das muss behoben werden. Ich würde vorschlagen, dass Sie in Ihrer Antwort etwas weiter gehen und erklären, wie Sie das Skript testen und konfigurieren, damit es über ein Servicemenü im Finder verwendet werden kann.
Mark Edington
2

Sie können Automator auch verwenden, um dasselbe zu erreichen, wenn das Terminal Sie erschreckt:

Löschen Sie ._ *. Mp3 in einem Automator-Workflow.

digitxp
quelle
Terminal macht mir keine Angst, es sei denn, ich mache rm -rf / und drücke die Eingabetaste: P Aber ich würde gerne Automator lernen, sieht cool aus
Kanadier Luke
Ah, ja, das ist auch eine gute Idee.
Slhck
Ist es hier nützlich, ausgewählte Finder-Elemente abzurufen?
Daniel Beck
Nicht wirklich. Ich war auf dem Mac eines anderen und musste hastig arbeiten.
digitxp