Nehmen wir an, ich habe 20 Dateien mit dem Namen FOOXX, wobei XX die Nummer der Datei ist, z. B. 01, 02 usw.
Im Moment ist es einfach, wenn ich alle Dateien mit einer niedrigeren Nummer als 10 löschen möchte. Ich verwende nur einen Platzhalter, z. B. rm FOO0 *.
Wenn ich jedoch bestimmte Dateien in einem Bereich löschen möchte, z. B. 13-15, wird dies schwieriger.
rm FPP [13-15] funktioniert nicht und fragt mich, ob ich alle Dateien löschen möchte. Ebenso möchte rm FOO1 [3-5] alle Dateien löschen, die mit FOO1 beginnen
Was ist der beste Weg, um solche Dateibereiche zu löschen?
Ich habe es sowohl mit bash als auch mit zsh versucht, und ich denke nicht, dass sie sich für solch eine grundlegende Aufgabe so sehr unterscheiden?
Antworten:
In bash können Sie verwenden:
oder
um FOO13, FOO14 und FOO15 zu löschen.
Bash Expansions Brace sind hier dokumentiert .
quelle
rm FOO{13..15}
.bash
Befehle bilden eine Teilmenge derz
Shell-Befehle.Für zukünftige Leser kann der
find
Befehl auch Dateien löschen. Ich entschied mich für ein ähnliches Problem:Die gewählte Antwort ist jedoch die einfachste Antwort auf diese Frage.
quelle
find . -name "*.o" -delete
und es funktionierte wie ein Zauber)ls | grep regex | xargs rm
quelle
find -regex ... -print0 | xargs -0 ...
dazu, sonst schlägt es bei Dateinamen mit Leerzeichen fehl.find
auch einfach verwenden-exec
.