Papierkorbverzeichnisse auf dem Mac - Wie man sie findet und wie man sie richtig löscht

Also schreibe ich ein kleines Stück Software in Go. Es ist eine Bibliothek, die es ermöglicht, den Papierkorb zu leeren und Dateien in den Papierkorb zu verschieben. Daneben ~/.Trashgibt es jedoch noch andere Papierkorbordner pro Laufwerk. Was wäre der richtige Weg, diese zu löschen?

Wird nur auf jedem Volume iteriert /Volumesund gelöscht .Trashesund anschließend neu erstellt?

Gibt es offizielle Unterlagen darüber, wenn ja, konnte ich sie nicht finden.

Wird das System diese nicht einfach wieder erstellen - das Design besteht darin, einen Papierkorb pro Einheit zu behalten, in dem Einheiten Benutzer-Home-Ordner und -Volumes sind. Was ist hier das Endziel?
Ein Ordner kann einen eigenen Papierkorb haben?
Das Endziel war nur, den gesamten Papierkorb programmgesteuert zu löschen.
Fragen zur Softwareentwicklung sind hier nicht Thema, können aber auf Stack Overflow gestellt werden .
Oh, Entschuldigung, ich bin nur davon ausgegangen, dass es sich um eine eher apfelspezifische Frage handelt. Da es nur darum geht, wie die Papierkorbordner funktionieren.
Nein. Das ist hier Thema. Skripterstellung ist im Hilfezentrum @user3439894 ausdrücklich erlaubt
@bmike, nach meinem Verständnis ist Go eine Programmiersprache, die statisch typisiert ist, und eine kompilierte Sprache in der Tradition von C, keine Skriptsprache. Ich glaube also, wenn jemand sagt "Ich schreibe ein kleines Stück Software in Go", dann macht es Softwareentwicklung und ist oder sollte kein Thema sein.
Ich kenne @user3439894, aber es geht nicht so sehr darum, zu gehen, sondern darum, wo sich die Papierkorbdateien befinden. Sie haben zu 100% Recht, es könnte auf SO gefragt werden, und Sie werden dort sicherlich einen anderen Empfang und eine andere Antwort bekommen, daher sehe ich Ihren Kommentar als wirklich versuchen, zu helfen. Ich habe gerade das "Off-Topic" eingegeben - Go-Scripting ist hier in Ordnung, ebenso wie Swift-Scripting, Bash-Scripting, Tcl-Scripting, AppleScript (Sie bekommen das Muster, denke ich ...)

Antworten (1)

Spotlight kann Ordner mit einem bestimmten Namen auf allen gemounteten und indizierten Volumes finden (aber das wird nicht die Antwort sein - haben Sie Geduld mit mir):

mdls ~/.Trash/

Dies zeigt Ihnen, dass der kMDItemFSName ".Trash" ist , also können Sie mdfind versuchen, eine Spotlight-Suche durchzuführen

mdfind "kMDItemFSName == '.Trash'"

Leider werden die Papierkörbe dadurch nicht gefunden, da Apple sie unsichtbar gemacht und wahrscheinlich vollständig von der Spotlight-Indizierung ausgeschlossen hat. Dies ist jedoch die beste Apple-Methode, um nach allgemeinen Dateien zu suchen.

Jetzt müssen Sie also das Dateisystem crawlen:

find / -name .Trash -print

Dies wird Dateisystemfehler auslösen, also müssen Sie root einschalten - seien Sie vorsichtig mit sudo - Sie können ein System ruinieren, so dass Sie nicht booten können, wenn Sie Dateien verschieben oder löschen (was Sie gleich tun werden - Dinge finden und dann löschen)

 sudo find / -name .Trash -print

Auch ohne sudo finden Sie die meisten Papierkörbe, da Ihr Benutzer in der Lage sein sollte, in den Papierkorb zu schreiben, um dort Dateien zu speichern.

Jetzt gibt es ein Tool, das schneller ist als find (es kann einige zehn Minuten oder vielleicht Stunden dauern, wenn es anfängt, entfernte oder verbundene Laufwerke zu crawlen).

locate .Trash

Die Locate-Datenbank wird wahrscheinlich nicht erstellt, wenn Sie danach fragen. Befolgen Sie daher die Anweisungen, die angezeigt werden, wenn Sie keine vorgefertigte Locate-Datenbank zum Zugreifen haben. Fröhliches Scripting. Fühlen Sie sich frei, eine Folgefrage zum Löschen zu stellen, wenn Sie diese Hilfe auch benötigen, aber dies beantwortet, wie Sie Dateien finden, die speziell versteckte Systemdateien wie die verschiedenen Papierkorbdateien sind.

Oder, wissen Sie – sagen Sie dem Finder einfach, dass er den Papierkorb von der Befehlszeile aus leeren soll:

Boom, jetzt bist du superschnell fertig, egal wo oder wie die Ordner benannt sind.

osascript -e 'tell app "Finder" to empty'