Как сопоставить пробелы в строке с помощью bash?

Как сопоставить пробелы в строке с помощью bash?
ls
Session 9 - Terminal Value.mp4

Теперь я хочу его удалить.

shopt -s dotglob
rm -rf  .*.mp4

Это не дало никакого эффекта, файл Session 9 - Terminal Value.mp4остался там. Возможно ., не удалось сопоставить пробелы.

решение1

dotglobиспользуется для сопоставления имен файлов, начинающихся с .(dotfiles), которые в противном случае скрыты при использовании шаблонов glob (если только .явно не присутствует в шаблоне).

Пример:

$ 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

Ваш шаблон .*.mp4соответствует именам файлов, начинающимся с литерала, .за которым следует любая строка *, за которой следует .mp4.

.Session 9 - Terminal Value.mp4Например, это будет соответствовать имени файла (с dotglobвключенным параметром или без него, поскольку первое .присутствует в шаблоне).

Поскольку подстановка также соответствует символам пробела, все, что вам нужно, это

rm *.mp4

Связанный контент