[英]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.