Qualcuno ha uno script Mac Terminal per rimuovere i file nascosti?


10

L'autoradio può riprodurre musica da unità flash USB, quindi ho chiesto di copiare MP3 da una playlist iTunes . Funzionava bene, ma il mio stereo non riproduceva i file MP3. Alla fine ho inserito l'unità flash nel mio computer di lavoro con Windows 7 e ho riscontrato il problema: ._[filename].mp3sono stati caricati anche un sacco di file nascosti nel formato .

So che in Windows, puoi eliminare i file in base agli attributi e mi chiedevo se puoi fare lo stesso in Terminal? Forse con uno script che posso eseguire con il volume come parametro?


Ho avuto lo stesso identico problema. Se i file ._ sono lì, il mio stereo direbbe "Bad Media", il che era totalmente sbagliato. Riprodurrebbe i file con il nome corretto, ma si lamenterebbe di ogni file ._. Mi ci è voluto un po 'per verificare che il supporto non fosse male, l'autoradio lo era!
Eric

Ma non è colpa dello stereo che fa schifo ... Lol. L'ho appena messo sul mio computer Win7 per mettere la musica al lavoro e li ho visti tutti: un mucchio di file nascosti che erano 4KB ciascuno
Canadian Luke,

L'autoradio dovrebbe ignorare quei file. Nel tuo caso non contengono alcuna informazione necessaria. Ma è lo stesso problema ovunque. Il mio lettore multimediale DLNA mostra anche questi durante la navigazione.
slhck,

Risposte:


20

Questi file sono nascosti in OS X perché iniziano con .e pertanto non vengono visualizzati nel Finder per impostazione predefinita. Non esiste alcun attributo speciale impostato in questi file a parte quello.

Un approccio molto semplicistico sarebbe quello di eliminare tutti i file che iniziano con un punto e un trattino basso:

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

Nota di sicurezza: eseguilo senza -deletevedere quali file verrebbero rimossi. E non farlo mai su tutto il Mac HD, solo sull'unità USB.


Per alcune informazioni aggiuntive: questi file sono chiamati "fork delle risorse" e talvolta contengono informazioni che non si desidera eliminare. Nel tuo caso d'uso, dovrebbe andare bene però. Puoi disabilitare permanentemente la creazione di questi file usando BlueHarvest . C'è anche un'app che afferma di pulirne i volumi, ma non l'ho provata ed è beta, quindi usa con cautela: Hidden Cleaner .


Non avevo capito che ... Buono a sapersi. Ci proverò stasera quando torno a casa, quindi segnerò la tua risposta. Grazie
Luke canadese,

8

Un'altra soluzione che ha funzionato per me (MacOS 10.6.8) nel tipo di terminale:

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

3

Ho avuto esattamente lo stesso problema con la mia autoradio, 1 file / 2 non è riproducibile, perché il lettore ritiene che il file dot creato da MAC OS sia un file musicale ... Quindi ho trovato questo post davvero utile, grazie.

Quindi ora torno con una soluzione migliorata e gratuita per Mavericks:

  1. Creare un'applicazione Automator per eseguire uno script AppleScript
  2. Usa questo script:

    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. Salvare l'applicazione come DiskCleaner.app per esempio

Questo script ti chiederà di scegliere il disco USB da pulire ed espellere. Quindi pulirà il disco USB (prova con le credenziali di amministratore se fallito con quelli attuali), quindi espelle se possibile.

Certo, c'è ancora spazio per migliorare, ho realizzato questo script per me stesso!

Inoltre hai la flessibilità di aggiungere righe di codice per pulire più file.

Godere!


Questo è davvero utile, considereresti di pubblicare l'intero flusso di lavoro di Automator?
Konrad,

Fantastico, molte grazie! Funziona per me su OSX10.12.1 se rimuovo {input, parameters}dalla linea 1 (lasciando solo on run). @Konrad: ho aperto 'Script Editor', ho fatto la modifica di cui sopra e salvato in / Applicazioni come app; lavoro fatto. Adoro vedere esattamente cosa sta succedendo, il che è più complicato con altre soluzioni gratuite.
ptim

Grazie. Ho provato la tua sceneggiatura. Quando l'ho eseguito dall'app Automator per testarlo, ho fatto clic sull'opzione di interruzione nella finestra di dialogo di selezione del disco e ho ancora ricevuto un prompt sudo e un messaggio sul mancato espulsione del disco. Penso che debba essere risolto. Ti suggerirei di andare un po 'oltre nella tua risposta spiegando come testare e configurare lo script in modo che sia utilizzabile dal menu dei servizi nel Finder.
Mark Edington

2

Puoi anche utilizzare Automator per ottenere lo stesso risultato se il terminale ti spaventa:

Elimina ._ *. Mp3 in un flusso di lavoro di Automator.


Il terminale non mi spaventa se non faccio rm -rf / e premo Invio: P Ma vorrei imparare Automator, sembra bello
Canadian Luke

Ah, sì, anche questa è una buona idea.
slhck,

Ottieni elementi di ricerca selezionati è utile qui?
Daniel Beck

Non proprio. Ero sul Mac di qualcun altro e ho dovuto lavorare in fretta.
digitxp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.