假设我有一个包含以下jpeg文件的文件夹:
adfjhu.jpg Afgjo.jpg
Bdfji.jpg bkdfjhru.jpg
Cdfgj.jpg cfgir.jpg
Ddfgjr.jpg dfgjrr.jpg
Run Code Online (Sandbox Code Playgroud)
如何删除或列出以大写字母开头的文件?
这可以用组合来解决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
Run Code Online (Sandbox Code Playgroud)
这种作品
$ ls +(A|B|C|D)*.jpg
Afgjo.jpg Bdfji.jpg Cdfgj.jpg Ddfgjr.jpg
Run Code Online (Sandbox Code Playgroud)
但我不想为所有字符AZ做这个通用解决方案!
这可能吗?
欢呼// Fredrik
您应该将您的语言环境设置为C(或POSIX)语言环境.
$ LC_ALL=C ls [A-Z]*.jpg
Run Code Online (Sandbox Code Playgroud)
要么
$ LC_ALL=C ls [[:upper:]]*.jpg
Run Code Online (Sandbox Code Playgroud)
在此处阅读更多信息:http://www.opengroup.org/onlinepubs/007908799/xbd/locale.html
使用带有字符类的括号表达式:
ls -l [[:upper:]]*
Run Code Online (Sandbox Code Playgroud)
有关man 7 regex字符类和其他信息的列表,请参阅.
从该页面:
在括号表达式中,'[:'和':]'中包含的字符类的名称代表属于该类的所有字符的列表.标准字符类名称是:
Run Code Online (Sandbox Code Playgroud)alnum digit punct alpha graph space blank lower upper cntrl print xdigit