Externes Laufwerk, Papierkorb kann nicht geleert werden, rm sieht eine Datei, aber ls -la nicht

Ich habe einen Musikordner auf meinem externen Laufwerk gelöscht und ein Verzeichnis gefunden, das ich nicht löschen kann, egal was ich versuche.

Wenn ich es per GUI in den Papierkorb lege

Der Vorgang kann nicht abgeschlossen werden, da das Element „Ordner“ verwendet wird.

Wenn ich rm -rfes über das Terminal entferne

$ rm -rf folder/
rm: folder/: Directory not empty

Wenn ich benutze ls -la, um seinen Inhalt zu überprüfen

$ ls -la
total 512
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

Wenn ich rm -i *innerhalb des Ordners verwende

$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory

Wenn ich verwende sudo lsof +D folder/, um zu überprüfen, ob Dateien geöffnet sind

Beim Beenden des Programms kehrt nichts zurück.

Wenn ich das Festplattendienstprogramm verwende, um Festplatte und Volume zu reparieren (Erste Hilfe).

Zustandsprüfung bestanden, daher wurde keine Reparatur eingeleitet.

Wenn ich macOS neu starte

Das Problem besteht weiterhin.

Zusätzliche Information:

  • Ich kann den Ordner innerhalb des Laufwerks verschieben, aber nicht auf ein anderes Laufwerk.

  • Ich kann den Ordner umbenennen.

  • ls -i *.mp3kehrt zurück ls: 03 - Ēlusion.mp3: No such file or directory, genauso wie rm -i *.mp3.

  • Die Datei wird nicht im Finder angezeigt, das ist ein verwirrender Teil, was auch immer für ein Problem mit der Anzeige von Dateinamen Terminal haben könnte (ich stelle es immer auf use ein Unicode - UTF-8), ich denke, es ist mehr Kraft im Spiel.

Als Antwort auf Fragen, nein, ls -ibgibt nichts zurück.

$ ls -i
$ ls -ib
$ ls -laib
total 512
2762318 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

Anscheinend ist also etwas darin, konnte es aber ls -lanicht sehen, während rm -ies mit dem Dateinamen komisch ist?

get infoüber das GUI-Kontextmenü hat bestätigt, dass sich 1 Element im Ordner befindet, jedoch mit null Byte, und es wird sicherlich nicht im Finder angezeigt.

Ich bin mir nicht sicher, was ich an dieser Stelle tun soll. Hilfe sehr geschätzt!

(Mit 10.13.4 + ExFAT auf externem Laufwerk)

Haben Sie darüber nachgedacht, alle gewünschten Daten zu sichern - wahrscheinlich sowieso schon gesichert ... und dann das Laufwerk komplett neu zu formatieren, um von vorne zu beginnen?
Zeigt ls -bdie Datei an? Wenn ja, können ls -biSie den Inode abrufen und der folgenden Antwort folgen oder alternativ einfach den Dateinamen in die -bAusgabe kopieren.
Ich glaube, das Kernproblem liegt nicht im Dateinamen. ls -bi *.mp3Zeigen Sie das gleiche Ergebnis wie in OP.

Antworten (2)

Das Problem scheint durch eine Datei namens 03-Ēlusion.mp3 verursacht zu werden, die sich im Verzeichnis folder befindet .

Da Terminal.app keine diakritischen Zeichen in Dateinamen wiedergeben kann – nun, das ist es, aber das würde den Rahmen sprengen, die einfachste Lösung für Sie bereitzustellen –, verbirgt es seinen Fehler, indem es den Dateinamen verbirgt (etwas, von dem ich bisher noch nichts gehört habe ; vielleicht die Änderungen von High Sierra in /.file, /.volfs und 64-Bit-Inodes? Warten Sie - egal; Ihre Bearbeitung Ihrer Frage sagt mir, dass ich Sie missverstanden habe.) Wie auch immer, die Existenz der Datei ist bekannt, zusammen mit der Ironie Behauptung des Finders, dass es nicht existiert. Offensichtlich tut es das. So ändern Sie das:

Ermitteln Sie zunächst die Inode-Nummer der Datei. Wechseln Sie in Terminal.app cdin das Verzeichnis „Ordner“ und geben Sie diesen Befehl ein:ls -i *.mp3

Kopieren Sie die Nummernzeichenfolge des Inodes, die in der linken Spalte der Antwort angegeben ist, was so etwas wie sein wird

12345678 03 - E ̄lusion.mp3

--und fügen Sie es in diesen Befehl ein, der es in etwas umbenennt, das das Terminal korrekt wiedergeben kann:

find . -inum 12345678 -exec mv {} deletemenow \;

-- Ihnen die Datei "deletemenow" im Ordner "folder" geben, die Sie beide nach Belieben entsorgen können.

Wow, das ist ein beeindruckend schrecklicher Fehler.
Ich glaube nicht, dass das richtig ist. Das Terminal kann einzelne Zeichen ausblenden , die es nicht darstellen kann, aber es wird nicht die gesamte Textzeile entfernen.
@duskwuff In jedem Fall scheint der Dateiname Probleme zu verursachen, daher ist dies unabhängig davon eine mögliche Lösung.
Tut mir leid, aber das Problem scheint komplexer zu sein: Ich habe versucht $ ls -i *.mp3, es kehrt zurück ls: 03 - Ēlusion.mp3: No such file or directory.
Ach, schade. Nun, da A.) der Versuch, das Verzeichnis mit dem Namen "Ordner" in den Papierkorb zu legen, stattdessen zu einer Warnung führt, dass das Element "in Verwendung" ist B.) dass die darin enthaltene Datei mit einer Länge von 0 Bytes gemeldet wird (es war bereits gelöscht - meistens) und C.), dass das externe Laufwerk Ex-Fat formatiert ist, würde ich sagen, die nächste einfache Lösung wäre, das Laufwerk an einen Windows-Computer anzuschließen und die offensichtlichen Ansätze auszuprobieren, sobald das Volume gemountet ist. Nun, es ist einfach, wenn Sie Zugriff auf einen Windows-Computer haben, das heißt ...
Können Sie einfach ls -iinnerhalb des Verzeichnisses laufen, um zu verhindern, dass die Shell-Wildcard-Erweiterung stört?
@nohillside sicher, und es gibt absolut nichts zurück, selbst mit ls -ib, ich werde die Frage aktualisieren.
@DocG. Ja, werde es eines Tages mit Windows versuchen ...
@duskwulff - ich hätte vor einigen Monaten genau dasselbe gesagt, und nachdem ich gerade die Bearbeitung der ursprünglichen Frage gesehen habe, stimme ich Ihnen jetzt wieder zu - ich dachte zum Zeitpunkt des Schreibens meiner Antwort, dass kein Dateiname gemeint ist Ich habe einige APFS-Ausfälle gesehen, wie hier: eclecticlight.co/2017/04/05/… und hier: eclecticlight.co/2017/04/06/…
Okay, ich habe das mit Windows 10 getestet, und ja, es hat funktioniert, die MP3-Datei wird angezeigt und hat ihre ursprüngliche Byteanzahl (ich kann auch spielen). Ich wurde neugierig und kopierte / benenne dieselbe Datei mit einem Namen wie test.mp3. Und es wird im macOS Finder/Terminal korrekt angezeigt. Ich werde dies an ein exFAT-Kompatibilitätsproblem unter macOS anheften.
Ich bin mir nicht sicher, ob Sie Ihre Antwort bearbeiten möchten oder ob ich selbst eine einreichen sollte :)
Machen Sie weiter ... Sie brauchten meinen Kommentar über "die nächste einfache Lösung" nicht, um auf die Idee zu kommen, einen Computer anzuschließen, dessen natives Dateisystem mit dem auf Ihrer externen Festplatte übereinstimmt.
Warte was? Die Datei ist INTAKT? Heh. Schattierungen von dot_clean. Kommt Ihnen der Ausdruck „Error 36“ bekannt vor? Nein, beantworte das nicht; Wasser unter der Brücke. Erwägen Sie jedoch, die Überschrift in Ihrem Beitrag so zu bearbeiten, dass sie „exFAT Drive“ enthält, um Personen mit ähnlichen Problemen zu helfen.
@Doc G. Ich habe eine andere Erklärung, aber ich brauche 5 Minuten, um eine kurze Zusammenfassung zu schreiben, warte

Ich habe lange gebraucht, um zu dieser Zusammenfassung zu kommen, aber ich denke, es ist die endgültige Antwort.

Die Ursache meines Problems ist bekannt :

OS X ist das Seltsame, da es sowohl Dateinamen normalisiert als auch NFD anstelle des gebräuchlicheren NFC verwendet .

Historisch (nicht so alt, vor 10.11) erzwingt OS X + HFS+ das NFD-Formular für alle Dateinamen , und Sie erhalten NFD-Ergebnisse nur von Befehlen und Systemaufrufen.

Dann beginnen sich die Dinge zu ändern, in 10.11 werden einige Ergebnisse von Systemaufrufen auf NFC normalisiert , was es in Einklang mit Windows und Linux bringt, aber auf Kosten einiger Programme, die NFD unter OS X erwarten.

Aber seit der Einführung von macOS 10.13 + AFPS ändert sich das Verhalten erneut: Apple entscheidet, dass es bei Anzeige und Systemaufrufen auf NFD normalisieren möchte , aber die ursprünglichen Dateinamen unverändert belässt (sodass sowohl NFC als auch NFD unterstützt werden, aber wenn Sie auswählen den Dateinamen im Finder oder kopieren lsSie das Ergebnis im Terminal, Sie erhalten das NFD-Formular).

Das ist alles großartig, bis Sie eine Datei mit NFD-Dateinamen mit exFAT auf einem externen Laufwerk ablegen (da es das einzige macOS/Windows-übergreifende Format mit Unterstützung für 4 GB+ Dateigröße ist): macOS 10.13 glaubt irgendwie, dass Ihre Datei im NFC-Format sein muss, also es hat gestunken.

Tatsächlich, hier ist ein schneller Test, ich habe einen Ordner in Windows auf meinem exFAT-Laufwerk mit 3 Dateien:

Geben Sie hier die Bildbeschreibung ein

  • test.mp3
  • Ēlusion.mp3( Ēin NFC)
  • 03 - Ēlusion( Ēim NFD)

(Sie können den genauen Unicode hier kopieren )

Wenn ich sie auf meinem macOS mounte, sehe ich Folgendes:

Geben Sie hier die Bildbeschreibung ein

und ls -laibErgebnis:

$ ls -laib
total 46592
2762318 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 ..
1572961 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 Ēlusion.mp3
1572871 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 test.mp3

Wie Sie sehen können, ist die NFC-Datei vorhanden, aber die NFD-Datei fehlt.

Selbst wenn Sie sich des NFC/NFD-Problems unter OS X bewusst sind , erwarten Sie möglicherweise nicht, dass das externe exFAT-Laufwerk dieses Problem auf die entgegengesetzte Weise angeht (NFC ist in Ordnung, aber NFD ist Feuer und Flamme).

Aber was könnte dazu geführt haben, dass meine Musikdatei überhaupt den NFD-Dateinamen verwendet hat:

  • Ich habe diese Musikdatei ursprünglich auf 10.9/10.10 mit einem älteren Mac heruntergeladen, der den NFD-Dateinamen erzwingt.
  • Irgendwann verschiebe ich sie auf ein Windows + NTFS-Laufwerk, das NFC/NFD nicht erzwingt, sodass der ursprüngliche NFD-Dateiname erhalten bleibt.
  • Jetzt möchte ich diese Datei mit einem exFAT-Laufwerk zurück auf mein macOS 10.13 + APFS verschieben (exFAT unterstützt dieselbe UTF-16-Konvention wie NTFS).
  • Die Hölle bricht los.

Ich hätte die Datei über ein Netzwerklaufwerk oder TeamViewer kopieren können, und es wäre in Ordnung, aber exFAT löst diesen Fehler unter macOS aus.

Unterricht:

  • Unicode-Dateiname ist immer noch eine Bedrohung.
  • Sie benötigen tatsächlich ein Windows/Linux, um dieses Problem zu beheben (falls sich Ihre Datei auf einem externen exFAT-Laufwerk befindet).
@bitlinn: Klicken Sie auf den zweiten Link in meinem Kommentar, der an Dämmerungwulff gerichtet ist, und probieren Sie das Apfelstrudel-Unicode-Normalisierungstool aus, das Sie dort finden. Sehr nützlich für APFS, sinnlos mit exFAT. Oder ist es...?
@DocG. Dieses Problem ist etwas komplexer als ich ursprünglich dachte, aber ich habe meine Antwort erneut aktualisiert!
Ja, ich dachte, du könntest das am Ende tun. Weitere Informationen zum Trennen von Dateizuordnungen auf Nicht-HFS-Systemen finden Sie in meinem früheren Kommentar zu Error 36und führen Sie eine Websuche nach etwas wie "Dateien hin und her verschieben, Windows Mac-Fehler 36" durch. Dies ist ein (weiteres) bekanntes Dateibenennungsproblem von MacOS / OS X seit System 10.6. Zwischen der Unicode-Normalisierung und der Trennung des dot_underscore-Attributs haben Sie einen doppelten Fehler erlebt. Ich bezweifle, dass der Befehl dot_clean eine Chance hatte.