繁体   English   中英

Linux:查找4或5个字符的文件名

[英]Linux: find file names with 4 or 5 characters

如何找到由4个或5个字符组成的文件名?

对于具有4个字符的文件名,我可以使用find . -name ????.tgz find . -name ????.tgz ,但如何将其扩展为4或5?

这是一种解决方案:

find . \( -name "????.cpp" -o -name "?????.cpp" \)

-o用于逻辑或

只需将.cpp替换为.tgz或任何您想要的内容。 这个正则表达式版本也可以做同样的事情:

find . -regextype posix-egrep -regex '^./[a-zA-Z]{4,5}\.cpp$'

在正则表达式^是起始符号^./表示以./开头。 [a-zA-Z]{4,5}表示后跟4至5个字符\\. 意味着 其中\\是转义字符\\.cpp$表示以.cpp结尾

如果文件名包含数字而不是[a-zA-Z]请执行[a-zA-Z0-9] 所以它看起来像这样:

find . -regextype posix-egrep -regex '^./[a-zA-Z0-9]{4,5}\.cpp$'
shopt -s extglob globstar
printf '%s\n' **/?????(?).tgz
  • extglob :启用扩展的globbing
  • globstar**将匹配所有文件以及零个或多个目录和子目录
  • ? :匹配任何单个字符
  • ?(pattern-list) :匹配给定模式的零个或一次

或者简单地:

printf '%s\n' **/????.tgz **/?????.tgz

您可以使用以下find命令:

find -type f -regextype egrep -regex ".*/[^./]{4,5}\.[^./]+$" 

设置正则表达式可以捕获任何具有4个或5个字符的基本名称文件。 请注意,此正则表达式适用于全名,包括路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM