Ho avuto un po 'di tempo e l'occasionale necessità di qualcosa di simile, quindi ho pensato di provare a scrivere un veloce AppleScript per farlo.
Il seguente AppleScript dovrebbe fare ciò di cui hai bisogno. Incollalo in un nuovo documento di AppleScript Editor e salvalo come applicazione, quindi puoi trascinare un volume su di esso per eliminare solo i suoi file dal Cestino.
Se trascini il disco di avvio su di esso, eliminerà i file dal Cestino dell'utente corrente nella loro cartella Inizio.
Se lasci più volumi sullo script, svuoterà tutti i loro rifiuti.
Lo script esamina solo i trascritti dell'utente corrente sui volumi. Sui volumi non di avvio (partizioni e unità esterne), il cestino dell'utente è in /Volumes/volumeName/.Trashes/userID/
; sul volume di avvio, appare in ~/.Trash/
.
Ignorerà tutto ciò che è stato rilasciato su di esso che non è un volume.
Ci sono alcune proprietà che puoi modificare per modificare il suo comportamento.
Richiedi eliminazione sicura : se vuoi che lo script ti chieda ogni volta se eliminare in modo sicuro, imposta la proprietà askForSecureEmpty
su true
(nella parte superiore dello script).
Comando Elimina predefinito (rm o srm) - Se non vuoi che lo script ti chieda ogni volta, imposta askForSecureEmpty
su false
, quindi imposta rmDefault
su entrambi rm
per normale o srm
per sicuro.
Disattiva dialoghi trivial : lo script mostrerà una finestra di dialogo se non trova alcun file del cestino da svuotare, ad es. se non ci fossero file nel Cestino di quel volume Per disabilitarli, modifica la proprietà, showDialogs
in false
. Se si verifica un errore effettivo durante il tentativo di eliminare file dal Cestino di un volume, verrà comunque visualizzato un messaggio di errore.
responsabilità
Il comando rm
può essere molto distruttivo. Ho scritto questo script abbastanza velocemente e l'ho testato solo sul mio Mac, quindi per favore usalo con cautela ea tuo rischio . Detto questo, in realtà non dovrebbe fare nulla per i file che non sono già in una cartella del cestino da qualche parte.
Uno scenario che non ho testato potrebbe causare un problema se si hanno due o più volumi con lo stesso nome.
Qualche idea per ripulire o migliorare lo script sono i benvenuti.
-- 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