Wie lassen sich mit Bash Leerzeichen in der Zeichenfolge abgleichen?

Wie lassen sich mit Bash Leerzeichen in der Zeichenfolge abgleichen?
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.mp4bleibt dort. .Möglicherweise können Leerzeichen nicht zugeordnet werden.

Antwort1

dotglobwird 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 .*.mp4stimmt mit Dateinamen überein, die mit einem Literal beginnen, .gefolgt von einer beliebigen Zeichenfolge *, gefolgt von .mp4.

Es würde .Session 9 - Terminal Value.mp4beispielsweise mit dem Dateinamen übereinstimmen (mit oder ohne dotglobaktiviert, da das erste .im Muster vorhanden ist).

Da Globbing auch auf Leerzeichen zutrifft, brauchen Sie nur

rm *.mp4

verwandte Informationen