bash 文件名通配 - 对以大写字母开头的文件进行操作
假设我有一个包含以下 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
,但我不想为所有角色 AZ 执行此操作以获得通用解决方案!
那么这可能吗?
干杯 //弗雷德里克
Lets say I have a folder with the following jpeg-files:
adfjhu.jpg Afgjo.jpg
Bdfji.jpg bkdfjhru.jpg
Cdfgj.jpg cfgir.jpg
Ddfgjr.jpg dfgjrr.jpg
How do I remove or list the files that starts with a capital?
This can be solved with a combination of find
, grep
and xargs
.
But it is possible with normal file-globbing/pattern matching in bash?
cmd below doesn't work due to the fact that (as far as I can tell) LANG is set to en_US
and the collation order.
$ ls [A-Z]*.jpg
Afgjo.jpg Bdfji.jpg bkdfjhru.jpg Cdfgj.jpg cfgir.jpg Ddfgjr.jpg dfgjrr.jpg
This sort of works
$ ls +(A|B|C|D)*.jpg
Afgjo.jpg Bdfji.jpg Cdfgj.jpg Ddfgjr.jpg
But I don't wanna do this for all characters A-Z for a general solution!
So is this possible?
cheers
//Fredrik
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该将区域设置设置为 C(或 POSIX)区域设置。
或
阅读此处了解更多信息: http://www.opengroup.org/onlinepubs/ 007908799/xbd/locale.html
you should set your locale to the
C
(orPOSIX
) locale.or
read here for more information: http://www.opengroup.org/onlinepubs/007908799/xbd/locale.html
将括号表达式与字符类一起使用:
请参阅
man 7 regex
获取字符类列表和其他信息。从该页面:
Use a bracket expression with a character class:
See
man 7 regex
for a list of character classes and other information.From that page:
使用
grep
:如果你想使用
for
循环:Use
grep
:If you want make more use a
for
loop: