如何用 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

相关内容