bash 文件名通配 - 对以大写字母开头的文件进行操作

标签 bash glob

假设我有一个包含以下 jpeg 文件的文件夹:

adfjhu.jpg  Afgjo.jpg  
Bdfji.jpg   bkdfjhru.jpg
Cdfgj.jpg   cfgir.jpg
Ddfgjr.jpg  dfgjrr.jpg

如何删除或列出以大写字母开头的文件?

这可以通过结合使用 findgrepxargs 来解决。

但是在 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/

相关文章:

python - 获取字符串形式的参数名称 - Python

python glob匹配更广泛的范围

Python 全局图像目录

Linux 列排序函数

python - glob.iglob 结果按名称排序?

bash - 如何在 bash 中回显包含未转义美元符号的变量

linux - 检查 URL 中是否有特定文本的脚本

Ruby Dir.glob 问题仅在 Windows 上

bash - 为 "git submodule foreach"设置不同的 shell

regex - 为什么 grep 匹配所有行,不管模式是什么