grep表示同时包含大小写字母的单词

grep表示同时包含大小写字母的单词,grep,uppercase,lowercase,Grep,Uppercase,Lowercase,我正在转换一系列(Progress)程序,以便在linux上使用(以前在Windows上使用过),我正在寻找一种方法来grep程序名的大小写,例如“skip_xref.I”或“NO_dt2.I”。 如何实现这一点?您可以使用ls-l | grep'pattern1\| pattern2' (假设您位于要搜索程序的目录中) 进行web搜索,阅读有关generalregexbasics的更多信息,以获得所需的模式。要查找文件名,您不能使用grep,您需要使用find 您可以在find中使用正则表达式

我正在转换一系列(Progress)程序,以便在linux上使用(以前在Windows上使用过),我正在寻找一种方法来grep程序名的大小写,例如“skip_xref.I”或“NO_dt2.I”。
如何实现这一点?

您可以使用
ls-l | grep'pattern1\| pattern2'

(假设您位于要搜索程序的目录中)


进行web搜索,阅读有关general
regex
basics的更多信息,以获得所需的模式。

要查找文件名,您不能使用grep,您需要使用find

您可以在find中使用正则表达式,但需要匹配整个路径。用
*/\
开始匹配将解决问题,因此这不是什么大问题

然后:

将匹配至少有一个小写字符后跟一个大写字符的文件名

如果使用group具有此模式以及相反的模式(切换小写和大写),则应获得所有匹配项:

find . -regex ".*/\(\(.*[a-z]+.*[A-Z]+\)\|\(.*[A-Z]+.*[a-z]+\)\).*"
此正则表达式应有助于:

 [a-z].*[A-Z]|[A-Z].*[a-z]
如果您想与grep合作:

grep '[a-z].*[A-Z]\|[A-Z].*[a-z]'


我没有回答这个模棱两可的问题,但您可以使用grep
-I的不区分大小写标志


e、 g.
docker help build | grep-i dockerfile
它仍然会找到“dockerfile”。

我建议在grep前面加上
LANG=C
,因为它不适用于我的默认值
LANG=en_US.UTF-8
。谢谢你的建议。如果我想把grep限制在包含。(点)?我要查找的名称通常以一个点结尾,后跟一个字符:Program.I或aFileName。p@Kent使用您建议的命令,我得到所有程序中的所有行。@标记您没有使用带点的图案,是吗<代码>[a-z].*.
我指的是答案中的模式。@Kent不,我是这样使用的:grep'[.].$'| grep-E'[a-z].[a-z].[a-z].*.\124;而且我肯定想使用grep。我想在某个文件夹中的所有文件中搜索文本,这些文本可能是程序名,由小写和大写字母组成
grep '[a-z].*[A-Z]\|[A-Z].*[a-z]'
grep -E '[a-z].*[A-Z]|[A-Z].*[a-z]'