Bash: Alle Dateien löschen mit Ausnahmen
Hi, ich würde gerne einen Ordner leeren, bis auf ein paar spezifische Dateien.
Mein Ansatz
funktioniert leider nicht. Es werden alle Dateien im Ordner gelöscht, trotz "!"
Wo liegt der Fehler?
Mein Ansatz
rm -v !("*.foo*"|"*.bar")
funktioniert leider nicht. Es werden alle Dateien im Ordner gelöscht, trotz "!"
Wo liegt der Fehler?
Please also mark the comments that contributed to the solution of the article
Content-ID: 1742560408
Url: https://administrator.de/forum/bash-alle-dateien-loeschen-mit-ausnahmen-1742560408.html
Printed on: January 24, 2025 at 12:01 o'clock
4 Comments
Latest comment
Servus.
Des weitere führen viele Wege nach Rom, hier noch ein paar ...
usw.
Grüße Uwe
Wo liegt der Fehler?
Da sind Anführungszeichen zu viel, mit denen wird das Sternchen literal interpretiert und es findet kein Globbing statt, somit wird auch nichts ausgeschlossen und es wird alles entfernt.rm -v !(*.foo|*.bar)
find . -type f \( ! -iname "*.foo" ! -iname "*.bar" \) -delete
# -------------
find . -type f -regextype posix-egrep \( ! -iregex ".*\.(foo|bar)$" \) -delete
# -------------
ls -1 | grep -Pv "\.(foo|bar)$" | xargs rm
# -------------
shopt -s extglob
rm -v !(*.foo|*.bar)
Grüße Uwe