Apakah ada yang punya skrip Terminal Mac untuk menghapus file tersembunyi?

10

Stereo mobil saya dapat memutar musik dari USB flash drive, jadi saya bertanya tentang menyalin MP3 dari daftar putar iTunes . Itu bekerja dengan baik, tetapi stereo saya tidak akan memutar file MP3. Saya akhirnya memasukkan flash drive ke komputer kerja saya yang menjalankan Windows 7, dan saya menemukan masalah: banyak file tersembunyi dalam format ._[filename].mp3juga dimuat.

Saya tahu bahwa di Windows, Anda dapat menghapus file berdasarkan atribut, dan saya ingin tahu apakah Anda dapat melakukan hal yang sama di Terminal? Mungkin dengan skrip yang dapat saya jalankan dengan Volume sebagai parameter?

Luke Kanada
sumber
Saya memiliki masalah yang sama persis. Jika file ._ Dimana, stereo saya akan mengatakan "Bad Media", yang sama sekali salah. Itu akan memainkan file yang dinamai dengan benar, tetapi mengeluh tentang masing-masing file ._ Butuh beberapa saat untuk memverifikasi bahwa media tidak buruk, stereo mobil!
Eric
Tapi itu bukan salah stereo yang disebalkan ... Lol. Saya hanya meletakkannya di komputer Win7 saya untuk menyalakan musik di tempat kerja dan melihat semuanya: Banyak file tersembunyi yang masing
Kanada Luke
Stereo mobil harus mengabaikan file-file itu. Dalam kasus Anda, mereka tidak mengandung informasi yang diperlukan. Tapi itu masalah yang sama di mana-mana. Media player DLNA saya menunjukkan ini juga saat browsing.
slhck

Jawaban:

21

File-file ini disembunyikan di OS X karena mereka mulai dengan .dan karena itu tidak ditampilkan di Finder secara default. Tidak ada atribut khusus yang diatur dalam file-file ini selain itu.

Pendekatan yang sangat sederhana adalah menghapus semua file yang dimulai dengan titik dan garis bawah:

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

Catatan keamanan: Jalankan tanpa -deletemelihat file mana yang akan dihapus. Dan jangan pernah melakukan ini pada seluruh Mac HD Anda, hanya pada drive USB Anda.


Untuk beberapa informasi tambahan: File-file ini disebut "Resource Forks" dan terkadang mengandung informasi yang tidak ingin Anda hapus. Namun dalam kasus penggunaan Anda, itu tidak masalah. Anda dapat menonaktifkan pembuatan file-file ini secara permanen menggunakan BlueHarvest . Ada juga aplikasi yang mengklaim untuk membersihkan volume mereka, tapi saya belum mencobanya dan ini masih beta, jadi gunakan dengan hati-hati: Hidden Cleaner .

slhck
sumber
Tidak menyadari itu ... Senang tahu. Saya akan mencobanya malam ini ketika saya pulang, lalu tandai jawaban Anda. Terima kasih
Luke Kanada
8

Satu lagi solusi yang bekerja untuk saya (MacOS 10.6.8) dalam tipe terminal:

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

Saya memiliki masalah yang sama persis dengan stereo mobil saya, 1 file / 2 tidak dapat diputar, karena pemain menganggap bahwa file dot yang dibuat oleh MAC OS adalah file musik ... Kemudian saya menemukan posting ini benar-benar bermanfaat, terima kasih.

Jadi saya kembali sekarang dengan solusi yang ditingkatkan dan gratis untuk Mavericks:

  1. Buat Aplikasi Automator untuk menjalankan skrip AppleScript
  2. Gunakan skrip ini:

    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. Simpan aplikasi sebagai DiskCleaner.app misalnya

Script ini akan meminta Anda untuk memilih disk USB untuk dibersihkan dan dikeluarkan. Maka itu akan membersihkan disk USB (mencoba dengan kredensial admin jika gagal dengan yang sekarang), lalu mengeluarkan jika mungkin.

Tentu saja masih ada tempat untuk perbaikan, saya membuat skrip ini untuk diri saya sendiri!

Anda juga memiliki fleksibilitas untuk menambahkan baris kode untuk membersihkan lebih banyak file.

Nikmati!

RSelec
sumber
Ini benar-benar bermanfaat, apakah Anda mempertimbangkan untuk memposting alur kerja Automator lengkap?
Konrad
Luar biasa, terima kasih banyak! Bekerja untuk saya di OSX10.12.1 jika saya menghapus {input, parameters}dari baris 1 (hanya menyisakan on run). @Konrad: Saya membuka 'Script Editor', membuat pengeditan yang disebutkan di atas, dan disimpan ke / Aplikasi sebagai aplikasi; pekerjaan selesai. Saya suka bisa melihat persis apa yang terjadi, yang lebih rumit dengan solusi gratis lainnya.
ptim
Terima kasih. Saya mencoba skrip Anda. Ketika saya menjalankannya dari aplikasi Automator untuk mengujinya, saya mengklik opsi batalkan pada dialog pemilihan disk dan masih mendapat sudo prompt dan pesan tentang gagal mengeluarkan disk. Saya pikir itu perlu diperbaiki. Saya sarankan Anda melangkah lebih jauh dalam jawaban Anda dengan menjelaskan cara menguji dan mengkonfigurasi skrip agar dapat digunakan dari menu layanan di Finder.
Mark Edington
2

Anda juga dapat menggunakan Automator untuk mencapai hal yang sama jika terminal membuat Anda takut:

Hapus ._ *. Mp3 dalam alur kerja Automator.

digitxp
sumber
Terminal tidak membuat saya takut kecuali saya lakukan rm -rf / dan tekan Enter: P Tapi saya ingin belajar Automator, terlihat keren
Canadian Luke
Ah, ya, itu ide yang bagus juga.
slhck
Apakah Dapatkan Item Pencari Pilihan berguna di sini?
Daniel Beck
Tidak juga. Saya menggunakan Mac orang lain dan harus bekerja dengan tergesa-gesa.
digitxp