Svuotare il cestino dell'unità USB


41

Ho un'unità USB collegata al mio Mac. Quello che ho scoperto è .Trashesstato non svuotato quando il cestino di svuotamento (fare clic con il tasto destro sull'icona Cestino ed eseguire "Svuota cestino") per l'unità USB

Cosa potrebbe esserci di sbagliato? C'è un altro modo per svuotare il cestino dell'unità USB?


9
Interessante, svuotare il cestino lo fa sempre con successo per le mie unità USB. La mia unica lamentela è che spesso mi piacerebbe svuotare solo il cestino sul mio drive USB e non dovrei farlo per ogni drive sul sistema.
Matthew Frederick,

4
@Matthew provarerm -R /Volumes/volumename/.Trashes/$UID
Gordon Davisson il

@Gordon Perfetto, grazie! Creato un Applescript a una riga per eseguire il comando ed è un paio di sequenze di tasti di QuickSilver in qualsiasi momento.
Matthew Frederick,

Risposte:


36

È possibile che ci siano file nel cestino di altri utenti . La .Trashescartella nella parte superiore di ciascun volume contiene sottocartelle per ciascun utente diverso, in base al numero ID utente (ad esempio, il cestino dell'utente 502 è inserito .Trashes/502).
Puoi vedere se per te usando un comando come questo (sostituisci VolumeNamecon il nome del tuo drive):

ls -la /Volumes/VolumeName/.Trashes/
total 0
d-wx-wx-wt@  3 _unknown  _unknown   102 10 Feb 18:15 .
drwxrwxrwx@ 21 root      wheel      782 13 Feb 14:17 ..
drwx------@ 35 _unknown  _unknown  1190 13 Feb 14:18 502

Come puoi vedere, sulla mia .Trashescartella del disco USB c'è una sottocartella chiamata 502, di proprietà dell'ID utente 502 (per riferimento, il mio ID utente corrente è 501). Poiché questo utente non esiste sul mio sistema, lo vedo come _unknown, e il mio utente non può guardarlo al suo interno, né eliminarlo. Per guardare all'interno di quella cartella dobbiamo farlo come amministratore (cioè usare sudo).

Se si è certi che si desidera, è possibile eliminare tutti spazzatura 's cancellando l'intera .Trashescartella con un comando come:

sudo rm -R /Volumes/volumeName/.Trashes

Attenzione: come per qualsiasi cosa che coinvolga sudo( "fai come superutente" , cioè amministratore di sistema) e rm -R, utilizzalo attentamente. Se lo digiti male, potrebbe avere ... spiacevoli conseguenze.


Il "potrebbe essere nel cestino di qualcun altro" è esattamente il problema che stavo incontrando. Questo dovrebbe essere meglio pubblicizzato!
cdeszaq,

L'aggiunta dell'opzione -f al comando forzerà l'azione. La sostituzione del "nome volum" con "*" consente di collegare più unità USB e svuotare contemporaneamente tutti i Cestino su tutti. Non è necessario connettersi 1 per 1 e quindi ripetere.
Danijel-James W,

Può essere pericoloso eseguire un comando che coinvolge entrambi sudo rme /Volumes/*/something, poiché potrebbe influire anche sull'unità di sistema e un errore di battitura può avere conseguenze negative.
Gerlos,

8

Comportamento normale:
quando si elimina qualcosa da un'unità USB, viene spostato in una .Trashescartella su quel volume. Una volta collegato al computer, gli elementi eliminati verranno visualizzati nel cestino con tutto il resto.

Quando lo scolleghi, gli elementi che hai eliminato da quell'unità non verranno più visualizzati nel cestino fino a quando non lo ricollegherai. Quindi, puoi svuotare il cestino. Sarà davvero cancellarli da tale unità.

Se ciò non accade per te, ecco il mio suggerimento:

  1. Seleziona l'unità nella barra laterale del Finder.
  2. Senza selezionare nient'altro, premere cmd-i(o utilizzare la voce di menu FileGet Info).
  3. Utilizzare la Sharing and Permissionssezione di quella finestra per concedere Everyonele autorizzazioni Read and Write.

Questo dovrebbe essere accettato
zsitro,

7

Non so se sia la risposta migliore, ma almeno è una risposta funzionante.

Apri la riga di comando, cd sul volume USB (/ Volumes / USB per il mio caso) e digita:

/bin/rm -rf ./Trashes/* works fine with me.

Ciò richiederebbe che l'utente debba passare al volume specifico ogni volta. Sulla base della tua risposta, ho ideato uno script Bash e una soluzione AppleScript.
Danijel-James W,

2

2 soluzioni. 1 usando Bash l'altro usando Bash avvolto in AppleScript.

Soluzione n. 1

  1. Crea un nuovo AppleScript con /Applications/Utilities/AppleScript Editor
  2. Digita il seguente codice:

    eseguire lo script di shell "rm -rf /Volumes/*/.Trashes/*" con privilegi di amministratore

  3. Salvare il file in un posto comodo ed eseguirlo ogni volta che è necessario cancellare il Cestino USB
  4. Questo può essere eseguito facendo doppio clic su di esso

NOTA: Questo svuoterà il Cestino per tutti i volumi connessi incluso il tuo disco rigido interno. Se hai collegato 5 unità USB e un disco rigido Firewire, questo svuoterà il cestino per tutti.


Soluzione n. 2

  1. Accendi il tuo editor di testo preferito (il mio è nano)
  2. Incolla il seguente codice nel tuo editor di testo e salva il file

    #! / bin / bash
    sudo rm -rf /Volumes/*/.Trashes/*

  3. Salvare il file in un posto comodo con l'estensione .she quindi eseguirlo chmod +x {filename}.shdal Terminale

  4. Eseguilo con ./{filename}.sh

NOTA: stessa nota di cui sopra. Questo è eseguibile dal terminale.


2

Uso questo script AppleScript, lo salvo come applicazione:

on open these_volumes
    set t_id to user ID of (system info)
    repeat with i in these_volumes
        if (kind of (info for i without size)) is "Volume" then
            set tPath to (POSIX path of i) & ".Trashes/" & t_id
            do shell script "/bin/rm -Rf  " & (quoted form of tPath) & "/*"
        end if
    end repeat
end open

Trascina / rilascia i volumi sull'applicazione.

Questo script rimuove gli elementi dalla cartella cestino (ID utente) sul volume. se altri utenti utilizzano il volume questo script non eliminerà gli elementi dalla loro cartella cestino, altrimenti lo script avrebbe bisogno di una password amministratore per farlo.


Se si desidera espellere il volume dopo aver svuotato il cestino, utilizzare questo script.

on open these_volumes
    set t_id to user ID of (system info)
    set volToEject to {}
    repeat with i in these_volumes
        if (kind of (info for i without size)) is "Volume" then
            set tPath to (POSIX path of i) & ".Trashes/" & t_id
            do shell script "/bin/rm -Rf  " & (quoted form of tPath) & "/*"
            set end of volToEject to contents of i
        end if
    end repeat
    if volToEject is not {} then tell application "Finder" to eject volToEject
end open

Per far funzionare lo script di mele, trascina semplicemente il dispositivo o l'unità connessa all'applicazione AppleScript e rilascia. Puoi creare un alias sul dock accanto al normale cestino per comodità, trascinando l'icona dell'applicazione nel dock laterale.
Tony_kenya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.