Wie lösche ich eine Datei, deren Name mehrere Doppelpunkte enthält?

Wie lösche ich eine Datei, deren Name mehrere Doppelpunkte enthält?

Ich habe einen Ordner mit vielen Dateien, deren Name mehrere Doppelpunkte enthält. Beispiel: Mail::Message::Field::Full.3pm.gz.

Ich frage mich, wie ich sie löschen kann.

Ich habe versucht

rm Mail::Message::Field::Full.3pm.gz
rm Mail\:\:Message\:\:Field\:\:Full.3pm.gz
rm "Mail::Message::Field::Full.3pm.gz"

Alle mit dem gleichen Ergebnis: rm: cannot remove 'Mail::Message::Field::Full.3pm.gz': Input/output error.

Außerdem habe ich es mit meinem normalen Benutzerkonto und mit dem Root-Benutzer versucht. In beiden Fällen mit dem gleichen Ergebnis wie oben.

rmmit -fOption hat das gleiche Ergebnis.

Das gleiche Problem tritt beim Umbenennen der Dateien auf.

Und natürlich habe ich Schreibberechtigung für diesen Ordner.

Die Ausgabe von ls -list

ls: cannot access Mail::Message::Field::Full.3pm.gz: Input/output error
-????????? ? ? ? ?            ? Mail::Message::Field::Full.3pm.gz

Ich weiß nicht, ob das wichtig ist, aber die Dateien befinden sich auf einer NTFS-Partition.


Aktualisieren

Ich glaube nicht, dass es sich um ein Hardwareproblem handelt. Ich kann auf alle anderen Dateien zugreifen (schreiben, löschen, erstellen, dekomprimieren usw.). Auf die problematischen Dateien kann ich jedoch nicht zugreifen.

Antwort1

Es ist sehr wichtig, dass sich die Datei auf einer NTFS-Partition befindet.

Das :Zeichen ist auf den meisten Unix-Systemen und insbesondere nicht auf Linux kein Sonderzeichen (nur es /ist speziell). Es hat für den Kernel keine Bedeutung (einige Anwendungen messen ihm jedoch eine besondere Bedeutung bei, daher ist es besser, es nicht zu verwenden). Auf den meisten Unix-Dateisystemen, einschließlich der üblichen ext2/ext3/ext4 von Linux, können Sie es :in einem Dateinamen wie jedes andere Zeichen verwenden.

NTFS hat strengere (aber optionale) Regeln, da es aus der Windows-Welt stammt. Unter Windows :ist es in Dateinamen nicht zulässig (oder besser gesagt, es ist auf Kernelebene zulässig, wird aber von den meisten Anwendungen nicht unterstützt).einschließlich der Standard-Shells). DerOpen-Source-NTFS-Treiber NTFS-3Gversucht, Sie daran zu hindern, darin enthaltene Dateinamen zu erstellen :und kann verwirrt sein, wenn es einen vorhandenen ungültigen Dateinamen findet.

DerNTFS-3g-Handbuchbesagt, dass

Aus Gründen maximaler Portabilität und Interoperabilität werden neue Dateien immer im POSIX-Namespace erstellt. Das bedeutet, dass bei Dateinamen die Groß- und Kleinschreibung beachtet wird und alle Zeichen außer '/'und zulässig sind '\0'. Dies ist unter Windows vollkommen zulässig, einige Anwendungen können jedoch dadurch verwirrt werden.

Stellen Sie sicher, dass Sie die neueste Version des NTFS-3G-Treibers verwenden und dass das Dateisystem nicht mit dieser windows_namesOption gemountet ist.

Antwort2

Wenn Sie sagen, dass das Gleiche beim Umbenennen gilt, meinen Sie dann, dass Sie sie nicht umbenennen können, oder dass Sie es schaffen, sie umzubenennen, dann aber beim Löschen das gleiche Problem haben (wahrscheinlich nicht, vermute ich).

Nur zur Kontrolle: Haben Sie versucht, Platzhalter zu verwenden? Wenn Sie nicht zu viele Dateien haben, könnten Sie etwas wie Folgendes versuchen:

 rm -i Mail*essag**.gz

Dies -iführt dazu, dass Sie vor dem Löschen eine entsprechende Aufforderung erhalten, sodass Sie sicherstellen können, dass Sie nur die gewünschten Dateien löschen.

Ich vermute jedoch, dass es sich eher um ein Problem mit den Berechtigungen oder dem Dateisystem als um die Dateinameneigenschaften handelt. Oder möglicherweise um ein Anzeichen für einen Hardwarefehler.

Antwort3

Nachdem ich das ganze Hin und Her dazu durchgelesen habe, vermute ich, dass das NTFS-Dateisystem beschädigt ist.

Ich empfehle:

  1. Booten in Windows
  2. Durchführen einer vollständigen Dateisystemprüfung (Linux-Tools reichen für diese Aufgabe noch nicht wirklich aus)
  3. Booten Sie Linux erneut und versuchen Sie es erneut.

verwandte Informationen