Aplicación para vaciar la basura en una sola unidad

2

La "Papelera vacía" no es específica para mí, ya que vacía la papelera de todos los volúmenes conectados. Para vaciar la basura de una sola unidad (por ejemplo, en una memoria USB), he estado yendo al terminal y usando:

sudo rm -R /Volumes/<volume_name>/.Trashes

Lo que realmente me gustaría es una aplicación / Finder Extension / Menulet / etc que me permitiría vaciar la basura sin tener que correr al terminal (y sin tener que proporcionar una contraseña).

Podría envolver el comando bash en un script de Applescript / Automator, pero proporcionar el nombre del volumen es problemático.

¿Alguna idea? Puntos de bonificación si puedo elegir "Vaciar la papelera de forma segura".

    
pregunta Bill Nace 27.09.2011 - 14:31

5 respuestas

1

Tenía un poco de tiempo y la necesidad ocasional de algo como esto, así que pensé en intentar escribir un AppleScript rápido para hacer esto.

El siguiente AppleScript debería hacer lo que necesitas. Péguelo en un nuevo documento de AppleScript Editor y guárdelo como una aplicación, luego puede arrastrar un volumen sobre él para eliminar solo sus archivos de la Papelera.

Si arrastra el disco de inicio a él, eliminará los archivos de la Papelera del usuario actual en su carpeta de inicio.

Si coloca varios volúmenes en el script, vaciará todos sus residuos.

La secuencia de comandos solo examina la basura del usuario actual en los volúmenes. En los volúmenes que no son de inicio (particiones y unidades externas), la basura del usuario está en /Volumes/volumeName/.Trashes/userID/ ; en el volumen de inicio, se ve en ~/.Trash/ .

Ignorará todo lo que se caiga sobre él que no sea un volumen.


Hay algunas propiedades que puedes cambiar para modificar la forma en que se comporta.

Solicitud de eliminación segura : si desea que el script le pregunte cada vez si desea eliminar de forma segura, establezca la propiedad askForSecureEmpty en true (en la parte superior del script).

Comando de eliminación predeterminado (rm o srm) : si no desea que la secuencia de comandos le pregunte cada vez, establezca askForSecureEmpty a false , luego configure rmDefault en rm para normal o srm para seguro.

Deshabilitar diálogos triviales : la secuencia de comandos mostrará un diálogo si no encuentra ningún archivo de la Papelera para vaciar, por ejemplo. Si no hubiera archivos en la papelera de ese volumen. Para deshabilitar estos, cambie la propiedad, showDialogs a false . Si se produce un error real al intentar eliminar archivos de la Papelera de un volumen, seguirá recibiendo un mensaje de error.


Descargo de responsabilidad

El comando rm puede ser muy destructivo. Escribí este script bastante rápido y solo lo probé en mi propia Mac, así que utilícelo con precaución y bajo su propio riesgo . Dicho esto, realmente no debería hacer nada con ningún archivo que no esté en alguna parte en una carpeta de la Papelera.

Un escenario que no he probado que podría causar un problema es si tiene dos o más volúmenes con el mismo nombre.

Cualquier idea para limpiar o mejorar el script es bienvenida.

-- Script to empty selected volumes' trashes --

property askForSecureEmpty : false -- change to true if you want to choose each time script is used
property rmDefault : "rm" -- command to use when askForSecureEmpty is "false"; use "rm" for regular, "srm" for secure
property showDialogs : true

on run
    set theVolumes to {choose folder}
    emptyTrash(theVolumes)
end run

on open theVolumes
    emptyTrash(theVolumes)
end open

on emptyTrash(theVolumes)
    if askForSecureEmpty then
        set useSecure to display dialog "Use Secure Empty Trash?" buttons {"Cancel", "No", "Secure"} default button "Secure"
        if useSecure is "Secure" then
            set rmCommand to "srm"
        else
            set rmCommand to "rm"
        end if
    else
        set rmCommand to rmDefault
    end if

    -- Get the user ID to empty only the current user's Trash --
    set userID to user ID of (system info)

    -- Set up a counter to later determine if any volumes were dropped on the script --
    set volumeCount to 0

    -- Cycle through each item dropped on the script to empty its Trash --
    repeat with theVolume in theVolumes
        if kind of (info for theVolume) is "Volume" then --ignore anything that's not a volume
            set volumeCount to volumeCount + 1
            set volumeName to name of (info for theVolume)

            -- Check if we're working on the startup disk, if so use user's home Trash --
            tell application "System Events" to set startupVolume to name of startup disk
            if volumeName = startupVolume then
                set trashPath to "~/.Trash/"
            else
                set trashPath to quoted form of (POSIX path of theVolume & ".Trashes/" & userID & "/")
            end if

            -- Try emptying the trash --
            try
                do shell script "cd " & trashPath --make sure the expected Trash folder exists
                if (count (paragraphs of (do shell script "ls -l " & trashPath))) > 0 then
                    try
                        do shell script "cd " & trashPath & "; " & rmCommand & " -R ./*" --try to empty the trash
                    on error
                        display alert "Error on volume " & volumeName as warning message "There was an error trying to delete the files." buttons {"Cancel", "OK"} default button "OK"
                    end try
                else
                    if showDialogs then display dialog "The Trash for volume '" & volumeName & "' appears to be empty." buttons {"OK"} default button "OK"
                end if
            on error
                if showDialogs then display dialog "No Trash folder on '" & volumeName & "' for this user." buttons {"OK"} default button "OK"
            end try
        end if
    end repeat

    -- Report an error if no volumes were found --
    if volumeCount = 0 and showDialogs then display dialog "No volumes found."
end emptyTrash
    
respondido por el joelseph 28.09.2011 - 04:12
1

No lo he intentado yo mismo, pero tuve esta conversación con otra persona que usó SmartTrash . Dale una oportunidad.

    
respondido por el Reven 27.09.2011 - 16:29
1

Utilizo Cocktail para esto, que ya tengo por otras razones.

    
respondido por el GEdgar 27.09.2011 - 17:28
0

Aquí hay una opción de software gratuito (Smart Trash y Cocktail son comerciales): Super Empty Trash

Parece funcionar bien: es muy simple, elimínalo de un volumen a la vez.

    
respondido por el RichVel 30.11.2013 - 13:16
0

Una solución basada en GUI muy simple (para tarjetas SD, memorias USB y discos externos).

  • Desmonte el disco que desea "limpiar".
  • Cree la carpeta 'basura temporal' en el escritorio y arrastre todo lo que esté fuera de la basura a esta carpeta temporal.
  • Ahora monte el disco y abra la papelera: listo, solo los archivos de la papelera en el disco que desea limpiar.
  • Vaciar basura
  • Ahora arrastre todo de la carpeta temporal a la basura.
  • Para una buena medida, ahora también puede arrastrar la carpeta temporal a la papelera.
  • Trabajo hecho
respondido por el Phil P R Turtle 19.11.2015 - 08:49

Lea otras preguntas en las etiquetas