Es gibt ein Verzeichnis in meinem Linux-System, da aufgrund einer Softwarefehlfunktion einige Verzeichnisse mit Junk-Namen erstellt wurden, wie Sie unten sehen können. Ich habe Probleme, sie zu löschen,
$ ll
total 1532
drwxr-xr-x 2 sensage sensage 4096 Apr 19 16:56 -?$??
drwxrwxr-x 248 sensage sensage 4096 Apr 23 11:37 .
drwxrwxr-x 99 sensage sensage 4096 Apr 16 14:23 ..
drwxr-xr-x 2 sensage sensage 4096 Apr 6 14:54 }???;?
drwxr-xr-x 2 sensage sensage 4096 Apr 19 03:01 }??=?|
-rw-r--r-- 1 sensage sensage 88 Apr 22 13:37 $
drwxr-xr-x 2 sensage sensage 4096 Apr 2 12:43 ?
drwxr-xr-x 2 sensage sensage 4096 Mar 20 02:51 ?=??&?
drwxr-xr-x 2 sensage sensage 4096 Apr 11 08:40 ?;%??;
drwxr-xr-x 2 sensage sensage 4096 Apr 14 09:38 ?:????
drwxr-xr-x 2 sensage sensage 4096 Mar 22 17:21 ?(?>~?
drwxr-xr-x 2 sensage sensage 4096 Apr 1 13:45 ?[???%
drwxr-xr-x 2 sensage sensage 4096 Apr 3 14:03 [email protected]????
drwxr-xr-x 2 sensage sensage 4096 Apr 12 16:18 ??
drwxr-xr-x 2 sensage sensage 4096 Apr 17 16:38 ??&???
drwxr-xr-x 2 sensage sensage 4096 Mar 25 02:43 ??+???
drwxr-xr-x 2 sensage sensage 4096 Apr 19 00:46 Ü¡?,??
drwxr-xr-x 2 sensage sensage 4096 Mar 28 18:54 ÚŸ??"?
drwxr-xr-x 2 sensage sensage 4096 Mar 27 01:04 ???(?
drwxr-xr-x 2 sensage sensage 4096 Apr 19 22:41 ??ͨ?`
drwxr-xr-x 2 sensage sensage 4096 Apr 15 11:44 ?????-
wie Sie Verzeichnisnamen in Blau sehen können. Wenn ich sie löschen möchte, erhalte ich die folgende Fehlermeldung:
$ ls -1 | grep -v 20 | xargs rm -rf
xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option
rm: invalid option -- ¼
Try `rm ./'-¼$Þ¸Í'' to remove the file `-274$336270315'.
Try `rm --help' for more information.
was soll ich damit machen?
Akzeptierte Antwort:
ls
druckt Nicht-ASCII-Zeichen (oder vielmehr Zeichen, die in der aktuellen Ländereinstellung nicht unterstützt werden) als ?
. Dies ist einer der Gründe, warum die Ausgabe von ls
geparst wird ist eine schlechte Sache zu tun. Die Ausgabe von ls
soll angeschaut werden . In manchen Fällen, wie diesem, sind das nicht die tatsächlichen Namen, die im Dateisystem existieren.
Versuchen Sie stattdessen so etwas wie (dies löscht alle Dateien und Verzeichnisse, einschließlich /path/to/dir
)
rm -rf /path/to/dir
oder
find /path/to/dir -delete
oder
find /path/to/dir -exec rm -rf {} +
oder
find /path/to/dir -print0 | xargs -0 rm -rf
An Ihre Bedürfnisse anpassen. Um nur Dateien zu löschen, fügen Sie -type f
hinzu nach dem Pfad in find
Beispiele, zum Beispiel.
Machen Sie einfach rm -rf *
in diesem Verzeichnis (das ist wichtig , das aktuelle Arbeitsverzeichnis muss das Verzeichnis sein, dessen Dateien und Verzeichnisse Sie löschen möchten) kann auch ausreichen.