Papierkorb des USB-Laufwerks leeren

41

Ich habe ein USB-Laufwerk an meinen Mac angeschlossen. Was ich gefunden habe, wurde .Trashesnicht geleert, als der Papierkorb für das USB-Laufwerk geleert wurde (klicken Sie mit der rechten Maustaste auf das Papierkorbsymbol und führen Sie "Papierkorb leeren" aus)

Was könnte falsch sein? Gibt es eine andere Möglichkeit, den USB-Stick zu leeren?

Prosseek
quelle
9
Interessant ist, dass das Leeren des Papierkorbs für meine USB-Sticks immer erfolgreich ist. Meine einzige Beschwerde ist, dass ich oft nur den Papierkorb auf meinem USB-Laufwerk leeren möchte und dies nicht für jedes Laufwerk im System tun muss.
Matthew Frederick
4
@ Matthew versuchenrm -R /Volumes/volumename/.Trashes/$UID
Gordon Davisson
@ Gordon Perfekt, danke! Erstellt ein einzeiliges Applescript, um den Befehl auszuführen, und es sind jederzeit ein paar QuickSilver-Tastenanschläge erforderlich.
Matthew Frederick

Antworten:

36

Möglicherweise befinden sich Dateien im Papierkorb eines anderen Benutzers . Der .TrashesOrdner oben auf jedem Volume enthält Unterordner für jeden Benutzer nach Benutzer-ID-Nummer (z. B. der Papierkorb von Benutzer 502 befindet sich im Papierkorb .Trashes/502).
Mit einem Befehl wie diesem können Sie selbst feststellen, ob dies der Fall ist (ersetzen Sie ihn VolumeNamedurch Ihren Laufwerksnamen):

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

Wie Sie sehen, befindet sich auf meinem USB-Laufwerk .Trashesein Unterordner 502mit der Benutzer-ID 502 (meine aktuelle Benutzer-ID lautet 501). Da dieser Benutzer auf meinem System nicht vorhanden ist, sehe ich ihn als _unknownund mein Benutzer kann nicht in ihn hineinsehen und ihn auch nicht löschen. Um in diesen Ordner zu schauen, müssen wir ihn als Administrator ausführen (dh verwenden sudo).

Wenn Sie sicher sind, dass Sie möchten, können Sie den Papierkorb aller löschen , indem Sie den gesamten .TrashesOrdner mit einem Befehl wie dem folgenden löschen :

sudo rm -R /Volumes/volumeName/.Trashes

Warnung: wie bei allem, was involviert ist sudo( "als Superuser tun" , dh als Systemadministrator), und rm -Rverwenden Sie dies vorsichtig. Wenn Sie es falsch eingeben, kann es ... unangenehme Folgen haben.

Gordon Davisson
quelle
Die Meldung "Möglicherweise im Papierkorb einer anderen Person" ist genau das Problem, auf das ich gestoßen bin. Dies sollte besser beworben werden!
Cdeszaq
Durch Hinzufügen der Option -f zum Befehl wird die Aktion erzwungen. Durch Ersetzen des "Datenträgernamens" durch "*" können Sie mehrere USB-Laufwerke anschließen und den gesamten Papierkorb auf allen gleichzeitig leeren. Sie müssen nicht 1-zu-1 verbinden und dann erneut ausführen.
Danijel-James W
Es kann gefährlich sein , um einen Befehl auszuführen, der sowohl beinhaltet sudo rmund /Volumes/*/something, weil es auch das Systemlaufwerk beeinträchtigen könnte, und ein Tippfehler kann schlimme Folgen hat.
Gerlos
8

Übliches Verhalten:
Wenn Sie etwas von einem USB-Laufwerk löschen, wird es in einen .TrashesOrdner auf diesem Volume verschoben . Wenn Sie das Gerät an Ihren Computer anschließen, werden gelöschte Objekte zusammen mit allen anderen in Ihrem Papierkorb angezeigt.

Wenn Sie es entfernen, werden Elemente, die Sie von diesem Laufwerk gelöscht haben, nicht mehr in Ihrem Papierkorb angezeigt, BIS Sie es erneut anschließen. Dann können Sie den Papierkorb leeren. Es wird sie wirklich von diesem Laufwerk löschen.

Wenn dir das nicht passiert, ist hier mein Vorschlag:

  1. Wählen Sie das Laufwerk in Ihrer Finder-Seitenleiste aus.
  2. Drücken Sie, ohne etwas anderes auszuwählen cmd-i(oder verwenden Sie den Menüpunkt FileGet Info).
  3. Verwenden Sie den Sharing and PermissionsAbschnitt dieses Fensters, um Everyonedie Berechtigungen für zu erteilen Read and Write.
Nathan Greenstein
quelle
Dies sollte akzeptiert werden
zsitro
7

Ich weiß nicht, ob es die beste Antwort ist, aber es funktioniert zumindest.

Öffnen Sie die Befehlszeile, wechseln Sie auf die CD mit dem USB-Datenträger (/ Volumes / USB für meinen Fall) und geben Sie Folgendes ein:

/bin/rm -rf ./Trashes/* works fine with me.
Prosseek
quelle
Dies würde erfordern, dass der Benutzer jedes Mal zu dem spezifischen Volumen gehen muss. Aufbauend auf Ihrer Antwort habe ich ein Bash-Skript und eine AppleScript-Lösung entwickelt.
Danijel-James W
2

2 Lösungen. 1 mit Bash die andere mit Bash in AppleScript gewickelt.

Lösung Nr. 1

  1. Erstellen Sie ein neues AppleScript mit /Applications/Utilities/AppleScript Editor
  2. Geben Sie den folgenden Code ein:

    Führen Sie das Shell-Skript "rm -rf /Volumes/*/.Trashes/*" mit Administratorrechten aus

  3. Speichern Sie die Datei an einem geeigneten Ort und führen Sie sie aus, wenn Sie den USB-Papierkorb leeren müssen
  4. Dies kann durch Doppelklick ausgeführt werden

HINWEIS: Dadurch wird der Papierkorb für alle angeschlossenen Volumes einschließlich Ihrer internen Festplatte geleert. Wenn Sie 5 USB-Laufwerke und eine Firewire-Festplatte angeschlossen haben, wird der Papierkorb für alle geleert.


Lösung Nr. 2

  1. Starten Sie Ihren bevorzugten Texteditor (meiner ist nano)
  2. Fügen Sie den folgenden Code in Ihren Texteditor ein und speichern Sie die Datei

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

  3. Speichern Sie die Datei an einem geeigneten Ort mit der Erweiterung .shund machen Sie sie dann chmod +x {filename}.shüber Terminal ausführbar

  4. Führen Sie das mit ./{filename}.sh

HINWEIS: Gleicher Hinweis wie oben. Dies ist vom Terminal aus ausführbar.

Danijel-James W
quelle
2

Ich benutze dieses Skript AppleScript, speichere es als Anwendung:

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

Drag / Drop Volume (s) in der Anwendung.

Dieses Skript entfernt die Elemente aus Ihrem Papierkorbordner (Benutzer-ID) auf dem Volume. Wenn andere Benutzer das Volume verwenden, löscht dieses Skript die Elemente nicht aus ihrem Papierkorb. Andernfalls benötigt das Skript ein Administratorkennwort.


Wenn Sie das Volume nach dem Leeren des Papierkorbs auswerfen möchten, verwenden Sie dieses Skript.

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
quelle
Um das AppleScript zum Laufen zu bringen, ziehen Sie einfach das angeschlossene Gerät oder Laufwerk in die AppleScript-Anwendung und legen Sie es ab. Sie können einen Alias ​​im Dock neben dem normalen Papierkorb erstellen, indem Sie das Anwendungssymbol in das seitliche Dock ziehen und dort ablegen.
Tony_kenya