¿Alguien tiene un script de Mac Terminal para eliminar archivos ocultos?


10

El estéreo de mi automóvil puede reproducir música desde unidades flash USB, por lo que le pregunté sobre cómo copiar MP3 de una lista de reproducción de iTunes . Eso funcionó bien, pero mi estéreo no reproducía los archivos MP3. Finalmente puse la unidad flash en mi computadora de trabajo con Windows 7, y encontré el problema: ._[filename].mp3también se cargaron un montón de archivos ocultos en el formato .

Sé que en Windows, puede eliminar archivos basados ​​en atributos, y me preguntaba si puede hacer lo mismo en Terminal. ¿Posiblemente con un script que puedo ejecutar con el Volumen como parámetro?


Tuve exactamente el mismo problema. Si los archivos ._ estuvieran allí, mi equipo de música diría "Bad Media", lo cual fue totalmente incorrecto. Reproducía los archivos con el nombre correcto, pero se quejaba de cada archivo ._. Me tomó un tiempo verificar que los medios no estuvieran mal, ¡el estéreo del auto sí!
Eric

Pero no es culpa del estéreo que apesta ... Lol. Acabo de poner en mi ordenador Win7 para poner música en el trabajo y vi todos ellos: Un montón de archivos ocultos que eran de 4 KB cada uno
Lucas canadiense

El estéreo del automóvil debe ignorar esos archivos. En su caso, no contienen ninguna información necesaria. Pero es el mismo problema en todas partes. Mi reproductor multimedia DLNA también los muestra mientras navego.
slhck

Respuestas:


21

Estos archivos están ocultos en OS X porque comienzan con .y, por lo tanto, no se muestran en Finder de forma predeterminada. No hay ningún atributo especial establecido en estos archivos aparte de eso.

Un enfoque muy simplista sería eliminar todos los archivos que comienzan con un punto y un guión bajo:

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

Nota de seguridad: Ejecútelo sin -deletever qué archivos se eliminarán. Y nunca haga esto en toda su Mac HD, solo en su unidad USB.


Para obtener información adicional: estos archivos se denominan "Forks de recursos" y, a veces, contienen información que no desea eliminar. Sin embargo, en su caso de uso, eso debería estar bien. Puede deshabilitar permanentemente la creación de estos archivos con BlueHarvest . También hay una aplicación que afirma limpiar volúmenes de ellos, pero no la he probado y es beta, así que úsala con precaución: Hidden Cleaner .


No me di cuenta de eso ... Es bueno saberlo. Lo intentaré esta noche cuando llegue a casa, luego marcaré tu respuesta. Gracias
Canadian Luke

8

Una solución más que funcionó para mí (MacOS 10.6.8) en tipo de terminal:

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

3

Tuve exactamente el mismo problema con el estéreo de mi automóvil, 1 archivo / 2 no se puede reproducir, porque el reproductor considera que el archivo de puntos creado por MAC OS es un archivo de música ... Entonces encontré esta publicación realmente útil, gracias.

Así que vuelvo ahora con una solución mejorada y gratuita para Mavericks:

  1. Cree una aplicación de Automator para ejecutar un script AppleScript
  2. Usa este 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. Guarde la aplicación como DiskCleaner.app por ejemplo

Este script le pedirá que elija el disco USB para limpiar y expulsar. Luego limpiará el disco USB (intenta con credenciales de administrador si falla con las actuales), luego expulsa si es posible.

Por supuesto, todavía hay un lugar para mejorar, ¡hice este script por mí mismo!

También tiene la flexibilidad de agregar líneas de código para limpiar más archivos.

¡Disfrutar!


Esto es realmente útil, ¿consideraría publicar el flujo de trabajo completo de Automator?
Konrad

Impresionante, muchas gracias! Funciona para mí en OSX10.12.1 si elimino {input, parameters}de la línea 1 (dejando solo on run). @ Konrad: abrí el 'Editor de secuencias de comandos', hice la edición antes mencionada y la guardé en / Aplicaciones como una aplicación; trabajo hecho. Me encanta poder ver exactamente lo que está sucediendo, lo cual es más complicado con otras soluciones gratuitas.
ptim

Gracias. Probé tu guión. Cuando lo ejecuté desde la aplicación Automator para probarlo, hice clic en la opción de aborto en el cuadro de diálogo de selección de disco y aún recibí un mensaje de sudo y un mensaje sobre la falla al expulsar el disco. Creo que hay que arreglarlo. Te sugiero que vayas un poco más lejos en tu respuesta al explicar cómo probar y configurar el script para que se pueda usar desde un menú de servicios en Finder.
Mark Edington

2

También puede usar Automator para lograr lo mismo si el terminal lo asusta:

Eliminar ._ *. Mp3 en un flujo de trabajo de Automator.


La terminal no me asusta a menos que haga rm -rf / y presione Enter: P Pero me gustaría aprender Automator, se ve genial
Canadian Luke

Ah, sí, esa también es una buena idea.
slhck

¿Es útil obtener elementos seleccionados del buscador aquí?
Daniel Beck

Realmente no. Estaba en la Mac de otra persona y tuve que trabajar apresuradamente.
digitxp

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.