App per svuotare il cestino su una singola unità

2

Il "Empty Trash" è un po 'non specifico per me, poiché svuota il cestino su tutti i volumi collegati. Per svuotare il cestino da una singola unità (ad esempio, su una chiavetta USB), sono andato al terminale e ho usato:

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

Quello che mi piacerebbe davvero è App / Finder Extension / Menulet / etc che mi permetterebbe di svuotare il cestino senza dover eseguire il terminale (e senza dover fornire una password).

Potrei avvolgere il comando bash in uno script di Applescript / Automator, ma fornire il nome del volume è problematico.

Qualche idea? Punti bonus se posso scegliere di "Svuotare il cestino in modo sicuro".

    
posta Bill Nace 27.09.2011 - 14:31
fonte

5 risposte

1

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
    
risposta data 28.09.2011 - 04:12
fonte
1

Non l'ho provato da solo, ma ho avuto questa conversazione con qualcun altro che ha utilizzato SmartTrash . Provalo.

    
risposta data 27.09.2011 - 16:29
fonte
1

Io uso Cocktail per questo, che ho già per altri motivi.

    
risposta data 27.09.2011 - 17:28
fonte
0

Ecco un'opzione freeware (Smart Trash e Cocktail sono commerciali): Cestino super vuoto

Sembra funzionare bene - molto semplice, eliminare da un volume alla volta.

    
risposta data 30.11.2013 - 13:16
fonte
0

Una soluzione basata su GUI molto semplice (per schede SD, chiavette USB e dischi esterni).

  • Smonta il disco che vuoi "ripulire".
  • Crea una cartella "temp trash" sul desktop e trascina tutto fuori dal cestino in questa cartella temporanea.
  • Ora monta il disco e apri il cestino: presto, solo i file del cestino sul disco che vuoi pulire.
  • Svuota cestino
  • Ora trascina tutto dalla cartella temporanea nel cestino.
  • Per buona misura puoi ora trascinare anche la cartella temporanea nel cestino.
  • Lavoro fatto
risposta data 19.11.2015 - 08:49
fonte

Leggi altre domande sui tag