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