Löschen Sie alle Dateien, die mit einem Fragezeichen beginnen

23

Ich habe einen Ordner, in dem ich ca. 4k Dateien habe. Einige dieser Dateien beginnen mit aa ?oder einem !Zeichen. Ich muss sie löschen, kann aber keinen entsprechenden Ausdruck finden:

rm -f ./?*

löscht einfach alles. Möglicherweise kann ich grepls verwenden und es weiterleiten und xargsDateien in einen anderen Ordner verschieben, aber ich hatte gehofft, dass es einen geeigneten Weg gibt, dies zu tun. Brauche Hilfe bei den ?und !Dateien.

zurücklehnen
quelle

Antworten:

26

Keine Notwendigkeit für ausgefallene Sachen. Entkomme einfach dem, ?damit es nicht als Teil des Globus betrachtet wird:

rm -f ./\?*

Das funktioniert auch für !:

rm -f ./\!*

Oder auf einen Schlag:

rm -f ./{\?,\!}*

Aktualisieren

Habe gerade gemerkt, dass du auf grepdie Ausgabe von hinwiesst ls. Ich wollte Ihre Aufmerksamkeit auf die Tatsache lenken, dass Sie die Ausgabe von ls nicht analysieren sollten

Joseph R.
quelle
4
@recluze Nicht dumm; Es ist alles andere als selbstverständlich, wie man es macht, wenn man nicht weiß, dass Wildcards ausgeblendet werden.
einen Lebenslauf vom
@recluze Fühlen Sie sich nach 5 Stimmen auf Ihre Frage immer noch dumm? :) Übrigens, siehe die aktualisierte Antwort.
Joseph R.
Danke und danke :) ... war sich der Probleme in der Ausgabe bewusst, aber meine Dateien hatten ein bestimmtes Muster, auf das ich zählen konnte. Trotzdem gut zu wissen :)
14.07.13
13

In meinem Fall handelte es sich bei den Zeichen nicht wirklich um Fragezeichen, sondern um Unicode-Zeichen, die anscheinend in meiner Konsole nicht angezeigt werden konnten.

Verwenden rm -i *hat bei mir funktioniert. Wenn Sie dies nicht möchten, können Sie auch nach Inode löschen, wie unter http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html beschrieben .

Um den Inode zu finden, benutze:

ls -il

Dann mach:

find . -inum [inode-number] -exec rm -i {} \;
Jonathan
quelle