如何用bash匹配字串中的空格?

如何用bash匹配字串中的空格?
ls
Session 9 - Terminal Value.mp4

現在我想刪除它。

shopt -s dotglob
rm -rf  .*.mp4

沒有效果,檔案Session 9 - Terminal Value.mp4保留在那裡.

答案1

dotglob用於匹配以 a 開頭的檔案名稱.(點檔案),否則在使用 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

相關內容