Vider la corbeille de la clé USB

41

J'ai une clé USB connectée à mon Mac. Ce que j'ai trouvé n'a .Trashespas été vidé lorsque la corbeille de vidage (cliquez avec le bouton droit sur l' icône de la corbeille et exécutez "Vider la corbeille") pour le lecteur USB

Quel est le problème? Existe-t-il un autre moyen de vider la clé USB de la corbeille?

Prosseek
la source
9
Intéressant, vider la corbeille le fait toujours avec succès pour mes clés USB. Le seul reproche que je puisse faire à ce sujet est que, souvent, je souhaite uniquement vider la corbeille de mon lecteur USB, sans avoir à le faire pour chaque lecteur du système.
Matthew Frederick
4
@ Matthew essayerrm -R /Volumes/volumename/.Trashes/$UID
Gordon Davisson
@ Gordon Parfait, merci! Création d'un script Applescript d'une seule ligne pour exécuter la commande. Il s'agit d'une combinaison de touches QuickSilver à tout moment.
Matthew Frederick

Réponses:

36

Il est possible qu'il y ait des fichiers dans la corbeille d' un autre utilisateur . Le .Trashesdossier en haut de chaque volume contient des sous-dossiers pour chaque utilisateur différent, par numéro d'identification d'utilisateur (par exemple, la corbeille de l'utilisateur 502 est dans .Trashes/502).
Vous pouvez voir s'il le fait vous-même en utilisant une commande comme celle-ci (remplacez-le VolumeNamepar votre nom de lecteur):

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

Comme vous pouvez le constater sur mon .Trashesdossier de disque USB, il existe un sous-dossier appelé 502appartenant à l’ID utilisateur 502 (par référence, mon ID utilisateur actuel est 501). Comme cet utilisateur n'existe pas sur mon système, je le vois comme _unknownet mon utilisateur ne peut ni regarder à l'intérieur de celui-ci, ni le supprimer. Pour regarder à l'intérieur de ce dossier, nous devons le faire en tant qu'administrateur (c'est-à-dire utiliser sudo).

Si vous êtes sûr de vouloir, vous pouvez supprimer la corbeille de tout le monde en supprimant le .Trashesdossier entier avec une commande comme:

sudo rm -R /Volumes/volumeName/.Trashes

Avertissement: comme pour tout ce qui implique sudo( "faire en tant que super utilisateur" , c’est-à-dire administrateur système) et rm -Rutilisez-le avec précaution. Si vous le tapez mal, cela pourrait avoir ... des conséquences désagréables .

Gordon Davisson
la source
Le "peut-être dans la corbeille de quelqu'un d'autre" est exactement le problème que je rencontrais. Cela devrait être mieux annoncé!
cdeszaq
L'ajout du commutateur -f à la commande forcera l'action. En remplaçant le "nom de volume" par "*", vous pourrez connecter plusieurs clés USB et vider simultanément la Corbeille sur toutes les clés. Ne pas avoir à se connecter 1-by-1, puis à refaire.
Danijel-James W
Il peut être dangereux d’exécuter une commande qui implique les deux sudo rmet /Volumes/*/something, car cela pourrait même affecter votre lecteur système, et une faute de frappe pourrait avoir de graves conséquences.
Gerlos
8

Comportement habituel:
lorsque vous supprimez quelque chose d'un lecteur USB, celui-ci est déplacé vers un .Trashesdossier de ce volume. Une fois branchés sur votre ordinateur, les éléments supprimés apparaîtront dans votre corbeille avec le reste.

Lorsque vous le débranchez, les éléments que vous avez supprimés de ce lecteur n'apparaissent plus dans votre corbeille jusqu'à ce que vous le rebranchiez. Ensuite, vous pouvez vider la corbeille. Il va vraiment les supprimer de ce lecteur.

Si cela ne se produit pas pour vous, voici ma suggestion:

  1. Sélectionnez le lecteur dans la barre latérale du Finder.
  2. Sans rien sélectionner d’autre, appuyez sur cmd-i(ou utilisez le point de menu FileGet Info).
  3. Utilisez la Sharing and Permissionssection de cette fenêtre pour donner Everyoneles autorisations à Read and Write.
Nathan Greenstein
la source
Cela devrait être accepté
zsitro
7

Je ne sais pas si c'est la meilleure réponse, mais au moins sa réponse fonctionne.

Ouvrez la ligne de commande, accédez au volume USB (/ Volumes / USB pour mon cas) et tapez:

/bin/rm -rf ./Trashes/* works fine with me.
Prosseek
la source
Cela obligerait l'utilisateur à aller à un volume spécifique à chaque fois. En vous appuyant sur votre réponse, j'ai mis au point un script Bash et une solution AppleScript.
Danijel-James W
2

2 solutions. 1 en utilisant Bash l'autre en utilisant Bash enveloppé dans AppleScript.

Solution n ° 1

  1. Créer un nouveau AppleScript avec /Applications/Utilities/AppleScript Editor
  2. Tapez le code suivant:

    faire un script shell "rm -rf /Volumes/*/.Trashes/*" avec des privilèges d'administrateur

  3. Enregistrez le fichier dans un endroit pratique et exécutez-le chaque fois que vous devez vider la corbeille USB.
  4. Ceci peut être exécuté en double-cliquant dessus

REMARQUE: Ceci videra la corbeille de tous les volumes connectés, y compris votre disque dur interne. Si vous avez connecté 5 lecteurs USB et un disque dur Firewire, la corbeille sera vidée pour chacun d'eux.


Solution n ° 2

  1. Lancez votre éditeur de texte préféré (le mien est nano)
  2. Collez le code suivant dans votre éditeur de texte et enregistrez le fichier.

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

  3. Enregistrez le fichier dans un emplacement pratique avec l’extension .sh, puis rendez-le exécutable à chmod +x {filename}.shpartir de Terminal

  4. Exécuter ça avec ./{filename}.sh

NOTE: Même note que ci-dessus. C'est exécutable depuis le terminal.

Danijel-James W
la source
2

J'utilise ce script AppleScript, enregistrez-le sous Application:

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

Glisser / déposer le (s) volume (s) sur l'application.

Ce script supprime les éléments de votre dossier Corbeille (ID utilisateur) sur le volume. si d'autres utilisateurs utilisent le volume, ce script ne supprimera pas les éléments de leur dossier Corbeille, sinon le script aurait besoin d'un mot de passe administrateur pour le faire.


Si vous souhaitez éjecter le volume après avoir vidé la corbeille, utilisez ce 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
la source
Pour que le script d'Apple fonctionne, faites simplement glisser le périphérique ou le lecteur connecté vers l'application AppleScript et déposez-le. Vous pouvez créer un alias sur le dock à côté de la corbeille normale pour plus de commodité, en faisant glisser l'icône de l'application dans le dock latéral.
Tony_kenya