У кого-нибудь есть скрипт Mac Terminal для удаления скрытых файлов?

10

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

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

Канадский Люк
источник
У меня была точно такая же проблема. Если бы там были файлы ._, моя стереосистема говорила бы «Плохое медиа», что было совершенно неправильно. Он будет воспроизводить файлы с правильными именами, но жаловался на каждый файл ._. Мне потребовалось некоторое время, чтобы убедиться, что средства массовой информации не были плохими, стерео было!
Eric
Но это не вина стерео, это отстой ... Lol. Я просто включил его в свой компьютер Win7, чтобы включить музыку на работе, и увидел их все: кучу скрытых файлов по 4 КБ каждый
Канадский Люк
Автомобильная стереосистема должна игнорировать эти файлы. В вашем случае они не содержат никакой необходимой информации. Но это везде одна и та же проблема. Мой медиаплеер DLNA показывает их также во время просмотра.
slhck

Ответы:

21

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

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

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

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


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

slhck
источник
Не понял, что ... Полезно знать. Я попробую это сегодня вечером, когда вернусь домой, и запомню ваш ответ. Спасибо
канадец Люк
8

Еще одно решение, которое работало для меня (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-диск (попытается с учетными данными администратора, если не удалось с текущими), а затем извлечет, если это возможно.

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

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

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

RSelec
источник
Это действительно полезно, не могли бы вы опубликовать полный рабочий процесс Automator?
Конрад
Круто, большое спасибо! У меня работает на OSX10.12.1, если я удаляю {input, parameters}из строки 1 (оставляя только on run). @Konrad: я открыл «Редактор скриптов», сделал вышеупомянутые изменения и сохранил их в / Applications как приложение; Работа выполнена. Мне нравится, что я могу точно видеть, что происходит, что сложнее с другими бесплатными решениями.
ptim
Спасибо. Я попробовал твой сценарий. Когда я запустил его из приложения Automator, чтобы проверить его, я щелкнул параметр «Прервать» в диалоговом окне выбора диска и все еще получил приглашение sudo и сообщение о невозможности извлечь диск. Я думаю, что это должно быть исправлено. Я бы посоветовал вам пойти немного дальше в своем ответе, объяснив, как протестировать и настроить скрипт для его использования из меню служб в Finder.
Марк Эдингтон
2

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

Удалите ._ *. Mp3 в рабочем процессе Automator.

digitxp
источник
Терминал не пугает меня, если я не нажму rm -rf / и не нажму Enter: P Но я хотел бы изучить Automator, выглядит здорово
канадец Люк
Ах, да, это тоже хорошая идея.
slhck
Полезно ли получить выбранные элементы поиска?
Даниэль Бек
На самом деле, нет. Я был на чужом Mac и должен был работать на скорую руку.
digitxp