假设我有一个包含以下 jpeg 文件的文件夹:
adfjhu.jpg Afgjo.jpg
Bdfji.jpg bkdfjhru.jpg
Cdfgj.jpg cfgir.jpg
Ddfgjr.jpg dfgjrr.jpg
如何删除或列出以大写字母开头的文件?
这可以通过结合使用 find
、grep
和 xargs
来解决。
但是在 bash 中使用普通的文件匹配/模式匹配是可能的吗?
下面的 cmd 不起作用,因为(据我所知)LANG 设置为 en_US
和整理顺序。
$ ls [A-Z]*.jpg
Afgjo.jpg Bdfji.jpg bkdfjhru.jpg Cdfgj.jpg cfgir.jpg Ddfgjr.jpg dfgjrr.jpg
这类作品
$ ls +(A|B|C|D)*.jpg
Afgjo.jpg Bdfji.jpg Cdfgj.jpg Ddfgjr.jpg
但我不想对所有字符 A-Z 执行此操作以获得通用解决方案!
这可能吗?
干杯 //弗雷德里克
最佳答案
您应该将您的语言环境设置为 C
(或 POSIX
)语言环境。
$ LC_ALL=C ls [A-Z]*.jpg
或
$ LC_ALL=C ls [[:upper:]]*.jpg
阅读此处了解更多信息:http://www.opengroup.org/onlinepubs/007908799/xbd/locale.html
关于bash 文件名通配 - 对以大写字母开头的文件进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735137/