Vaciar la basura de la unidad USB

41

Tengo una unidad USB conectada a mi Mac. Lo que encontré .Trashesno se vació cuando la papelera de vaciado (haga clic con el botón derecho en el icono de Papelera y ejecute "Vaciar Papelera") para la unidad USB

¿Qué puede estar mal? ¿Hay alguna otra forma de vaciar la memoria USB?

prosseek
fuente
9
Interesante, vaciar la basura siempre lo hace con éxito para mis unidades USB. Mi única queja al respecto es que a menudo me gustaría vaciar solo la basura en mi unidad USB y no tener que hacerlo para cada unidad del sistema.
Matthew Frederick
44
@Matthew tryrm -R /Volumes/volumename/.Trashes/$UID
Gordon Davisson
@ Gordon Perfecto, gracias! Creó un Applescript de una línea para ejecutar el comando y es un par de pulsaciones de teclas QuickSilver en cualquier momento.
Matthew Frederick

Respuestas:

36

Es posible que haya archivos en la papelera de otro usuario . La .Trashescarpeta en la parte superior de cada volumen tiene subcarpetas para cada usuario diferente, por número de identificación de usuario (por ejemplo, la papelera del usuario 502 está en .Trashes/502).
Puede verlo usted mismo usando un comando como este (reemplace VolumeNamecon el nombre de su unidad):

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

Como puede ver, en mi .Trashescarpeta de disco USB hay una subcarpeta llamada 502, propiedad del ID de usuario 502 (como referencia, mi ID de usuario actual es 501). Como este usuario no existe en mi sistema, lo veo como _unknown, y mi usuario no puede mirar dentro de él, ni eliminarlo. Para mirar dentro de esa carpeta, debemos hacerlo como administrador (es decir, usar sudo).

Si está seguro de que desea, puede eliminar todos los 's de basura mediante la supresión de la totalidad de .Trashesla carpeta con un comando como:

sudo rm -R /Volumes/volumeName/.Trashes

Advertencia: como con cualquier cosa que implique sudo( "hacer como superusuario" , es decir, administrador del sistema) rm -R, y utilícelo con cuidado. Si lo escribe mal, podría tener ... consecuencias desagradables .

Gordon Davisson
fuente
El "podría estar en la Papelera de otra persona" es exactamente el problema con el que me encontraba. ¡Esto debería ser mejor anunciado!
cdeszaq
Agregar el modificador -f al comando forzará la acción. Sustituir el "nombre de volumen" con "*" le permitirá conectar múltiples unidades USB y vaciar toda la Papelera en todas ellas simultáneamente. No tiene que conectarse 1 por 1 y luego volver a hacer.
Danijel-James W
Puede ser peligroso ejecutar un comando que implique ambos sudo rmy /Volumes/*/something, porque podría afectar incluso la unidad del sistema, y ​​un error tipográfico puede tener malas consecuencias.
gerlos
8

Comportamiento habitual:
cuando elimina algo de una unidad USB, se mueve a una .Trashescarpeta en ese volumen. Cuando se conecta a su computadora, los elementos eliminados aparecerán en su contenedor de basura con todo lo demás.

Cuando lo desconecte, los elementos que haya eliminado de esa unidad ya no aparecerán en la basura HASTA que lo vuelva a enchufar. Entonces, puedes vaciar la basura. Será realmente eliminarlos de esa unidad.

Si eso no te sucede, aquí está mi sugerencia:

  1. Seleccione la unidad en la barra lateral del Finder.
  2. Sin seleccionar nada más, presione cmd-i(o use el elemento de menú FileGet Info).
  3. Use la Sharing and Permissionssección de esa ventana para otorgar Everyonelos permisos Read and Write.
Nathan Greenstein
fuente
Esto debería ser aceptado
zsitro
7

No sé si es la mejor respuesta, pero al menos es una respuesta funcional.

Abra la línea de comando, cd al volumen USB (/ Volumes / USB para mi caso) y escriba:

/bin/rm -rf ./Trashes/* works fine with me.
prosseek
fuente
Esto requeriría que el usuario tenga que ir al volumen específico cada vez. Sobre la base de su respuesta, se me ocurrió una secuencia de comandos Bash y una solución AppleScript.
Danijel-James W
2

2 soluciones. 1 usando Bash y el otro usando Bash envuelto en AppleScript.

Solución n. ° 1

  1. Cree un nuevo AppleScript con /Applications/Utilities/AppleScript Editor
  2. Escriba el siguiente código:

    hacer el script de shell "rm -rf /Volumes/*/.Trashes/*" con privilegios de administrador

  3. Guarde el archivo en un lugar conveniente y ejecútelo siempre que necesite borrar la Papelera USB
  4. Esto se puede ejecutar haciendo doble clic en él

NOTA: Esto vaciará la Papelera para todos los volúmenes conectados, incluido su disco duro interno. Si ha conectado 5 unidades USB y un disco duro Firewire, vaciará la basura de todos ellos.


Solución n. ° 2

  1. Enciende tu editor de texto favorito (el mío es nano)
  2. Pegue el siguiente código en su editor de texto y guarde el archivo

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

  3. Guarde el archivo en un lugar conveniente con la extensión .shy luego hágalo ejecutable chmod +x {filename}.shdesde la Terminal

  4. Ejecuta eso con ./{filename}.sh

NOTA: Misma nota que la anterior. Este es ejecutable desde la Terminal.

Danijel-James W
fuente
2

Utilizo este script AppleScript, guárdelo como Aplicación:

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

Arrastrar / soltar volumen (s) en la aplicación.

Este script elimina los elementos de su carpeta de basura (ID de usuario) en el volumen. si otros usuarios usan el volumen, este script no eliminará los elementos de su carpeta de basura, de lo contrario, el script necesitaría una contraseña de administrador para hacerlo.


Si desea expulsar el volumen después de vaciar la papelera, use este 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
Tony_kenya
fuente
Para que el AppleScript funcione, simplemente arrastre el dispositivo conectado o conduzca a la aplicación AppleScript y suéltelo. Puede crear un alias en el muelle junto a la papelera normal para mayor comodidad, arrastrando y soltando el icono de la aplicación en el muelle lateral.
Tony_kenya