![Wie lassen sich mit Bash Leerzeichen in der Zeichenfolge abgleichen?](https://rvso.com/image/1601540/Wie%20lassen%20sich%20mit%20Bash%20Leerzeichen%20in%20der%20Zeichenfolge%20abgleichen%3F.png)
ls
Session 9 - Terminal Value.mp4
Jetzt möchte ich es löschen.
shopt -s dotglob
rm -rf .*.mp4
Es hat keine Wirkung, die Datei Session 9 - Terminal Value.mp4
bleibt dort. .
Möglicherweise können Leerzeichen nicht zugeordnet werden.
Antwort1
dotglob
wird verwendet, um Dateinamen abzugleichen .
, die mit (Dotfiles) beginnen und andernfalls bei der Verwendung von Glob-Mustern ausgeblendet sind (es sei denn, es .
ist explizit im Muster vorhanden).
Beispiel:
$ shopt dotglob
dotglob off
$ touch .lala
$ ls *lala
ls: cannot access '*lala': No such file or directory
$ shopt -s dotglob
$ shopt dotglob
dotglob on
$ ls *lala
.lala
Ihr Muster .*.mp4
stimmt mit Dateinamen überein, die mit einem Literal beginnen, .
gefolgt von einer beliebigen Zeichenfolge *
, gefolgt von .mp4
.
Es würde .Session 9 - Terminal Value.mp4
beispielsweise mit dem Dateinamen übereinstimmen (mit oder ohne dotglob
aktiviert, da das erste .
im Muster vorhanden ist).
Da Globbing auch auf Leerzeichen zutrifft, brauchen Sie nur
rm *.mp4