9

Моя автомобильная стереосистема может воспроизводить музыку с USB-накопителей, поэтому я спросил о копировании MP3 из плейлиста iTunes. Это работало нормально, но моя стереосистема не воспроизводила файлы MP3. В конце концов я установил флешку на свой рабочий компьютер под управлением Windows 7, и обнаружил проблему: также были загружены несколько скрытых файлов в формате ._[filename].mp3 .

Я знаю, что в Windows вы можете удалять файлы на основе атрибутов, и мне было интересно, можете ли вы сделать то же самое в терминале? Возможно, с помощью скрипта, который я могу запустить с томом в качестве параметра?

4 ответа4

20

Эти файлы скрыты в OS X, потому что они начинаются с . и поэтому не отображаются в Finder по умолчанию. В этих файлах нет специального атрибута, кроме этого.

Очень упрощенный подход заключается в удалении всех файлов, которые начинаются с точки и подчеркивания:

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

Примечание по безопасности: Запустите это без -delete чтобы увидеть, какие файлы будут удалены. И никогда не делайте этого на вашем Mac HD, только на USB-накопителе.


Для некоторой дополнительной информации: эти файлы называются "Resource Forks" и иногда содержат информацию, которую вы не хотите удалять. В вашем случае, это должно быть хорошо, хотя. Вы можете навсегда отключить создание этих файлов с помощью BlueHarvest. Есть также приложение, которое утверждает, что очищает их объемы, но я не пробовал его, и это бета-версия, поэтому используйте его с осторожностью: Hidden Cleaner.

7

Еще одно решение, которое работало для меня (MacOS 10.6.8) в терминальном типе:

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

У меня была точно такая же проблема с моей автомобильной стереосистемой, 1 файл /2 не воспроизводится, потому что проигрыватель считает, что файл точек, созданный MAC OS, является музыкальным файлом ... Тогда я нашел этот пост действительно полезным, спасибо.

Поэтому я возвращаюсь теперь с улучшенным и бесплатным решением для Mavericks:

  1. Создайте приложение Automator для запуска скрипта AppleScript
  2. Используйте этот скрипт:

    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. Сохраните приложение как DiskCleaner.app, например

Этот скрипт попросит вас выбрать USB-диск для очистки и извлечения. Затем он очистит USB-диск (попытается с учетными данными администратора, если не удалось с текущими), а затем извлечет, если это возможно.

Конечно, есть еще место для совершенствования, я сделал этот скрипт для себя!

Также у вас есть возможность добавлять строки кода для очистки большего количества файлов.

Наслаждайтесь!

2

Вы также можете использовать Automator, чтобы выполнить то же самое, если терминал вас пугает:

Удалять ._ *. mp3 в рабочем процессе Automator.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .