Wenn Sie unter UNIX / Linux eine Datei mit Sonderzeichen wie erstellen touch \"la*
, können Sie sie nicht mit entfernen rm "la*
. Sie müssen die Inode-Nummer verwenden (Sie können, wenn Sie den \
vor dem Namen hinzufügen , ich weiß, aber Sie müssten als Benutzer erraten, dass es in der Dateierstellung verwendet wurde).
Ich habe die Manpage auf rm überprüft, aber die Inode-Nummer wird nicht erwähnt. Das rm inodenumber
geht auch nicht.
Was ist der Befehl dafür?
-xdev
Option einschränken, da andere gemountete Dateisysteme möglicherweise auch nicht verwandte Dateien mit derselben Inode-Nummer haben.Vielleicht fehlt mir etwas, aber ...
Wie auch immer, Dateinamen haben keine Inodes, Dateien schon. Wenn Sie versuchen, eine Datei zu entfernen, ohne alle Dateinamen zu entfernen, die darauf verweisen, wird Ihr Dateisystem beschädigt.
quelle
Wenn Sie dies wirklich tun möchten - und Ihr Anwendungsfall überhaupt nicht so aussieht, wie Sie es brauchen -, können Sie die Tools zum Debuggen von Dateisystemen ausprobieren. Wenn Sie bereit sind, alles zu verlieren, ist das.
Zum Beispiel hat der
debugfs
Befehl für ext2 / 3/4 eine "kill_file" -Option, die einen Inode zu haben scheint. Wie in anderen Antworten erwähnt, wird dadurch Ihr Dateisystem beschädigt, da Verzeichniseinträge auf eine nicht vorhandene Datei verweisen. Ein späterer Betriebfsck
kann dies möglicherweise reparieren. Es ist unwahrscheinlich, dass Sie dies auf einem bereitgestellten Dateisystem tun können.Aber ich würde dringend empfehlen Sie nur geeigneten Escaping verwenden / zitieren und löschen diese Dateien mit dem regulären
rm
Befehl wie in einer früheren Antwort erwähnt - und Verwendungrm -i
für zusätzliche Sicherheit beim Umgang mit dem Umgang Dateinamen mit Globbing Zeichen wie *quelle
Ich empfehle nachdrücklich den Ansatz "Escape the Special Character", aber es gibt immer den
clri
Befehl, wenn Sie wirklich eine behebbare Beschädigung des Dateisystems wünschen.quelle
clri
normalerweise nur auf Oracle-Systemen (z. B. SunOS) vorhanden ist.Sie können Dateien, die mit einem Bindestrich beginnen, durch Aufrufen löschen
rm -- filename
.quelle
Die Herausforderung, die ich hatte, war das Entfernen eines Dateinamens, der mit einem Bindestrich beginnt, der immer als Hostname interpretiert werden soll. Ich habe das gelöst mit:
quelle