Einige andere Methoden umfassen:
Maskieren der Sonderzeichen:
[~]$rm \"la\*
Verwenden Sie den Befehl find und durchsuchen Sie nur das aktuelle Verzeichnis. Der Find-Befehl kann nach Inode-Nummern suchen und hat einen praktischen -delete
Schalter:
[~]$ls -i 7404301 "la* [~]$find . -maxdepth 1 -type f -inum 7404301 ./"la* [~]$find . -maxdepth 1 -type f -inum 7404301 -delete [~]$ls -i [~]$
Vielleicht übersehe ich etwas, aber...
rm '"la*'
Wie auch immer, Dateinamen haben keine Inodes, Dateien schon. Wenn Sie versuchen, eine Datei zu entfernen, ohne alle darauf verweisenden Dateinamen zu entfernen, wird Ihr Dateisystem beschädigt.
Wenn Sie wirklich Wenn Sie dies tun möchten - und Ihr Anwendungsfall nicht wirklich so aussieht, als müssten Sie dies tun, können Sie Debugging-Tools für das Dateisystem ausprobieren. Das heißt, wenn Sie bereit sind, alles zu verlieren.
Zum Beispiel für ext2/3/4 die debugfs
Der Befehl hat eine "kill_file"-Option, die einen Inode zu nehmen scheint. Wie in anderen Antworten erwähnt, wird dies wird Ihr Dateisystem beschädigen, da Verzeichniseinträge auf eine nicht vorhandene Datei verweisen. Ausführen von fsck
danach kann man das vielleicht reparieren. Es ist unwahrscheinlich, dass Sie dies auf einem gemounteten Dateisystem tun können.
Aber ich würde es dringend empfehlen Sie verwenden einfach entsprechende Escapezeichen/Zitate und löschen solche Dateien mit dem regulären rm
Befehl wie in einer früheren Antwort erwähnt - und verwenden Sie rm -i
für zusätzliche Sicherheit beim Umgang mit Dateinamen, die Globbing-Zeichen wie *