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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1742560408
Url: https://administrator.de/contentid/1742560408
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
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