如何查找由 4 个或 5 个字符组成的文件名?
对于 4 个字符的文件名,我可以使用find . -name ????.tgz
,但是如何将其扩展为 4 或 5 的长度?
如何查找由 4 个或 5 个字符组成的文件名?
对于 4 个字符的文件名,我可以使用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]
do [a-zA-Z0-9]
。所以它看起来像这样:
find . -regextype posix-egrep -regex '^./[a-zA-Z0-9]{4,5}\.cpp$'
你可以使用这个find
命令:
find -type f -regextype egrep -regex ".*/[^./]{4,5}\.[^./]+$"
正则表达式设置为捕获任何具有 4 或 5 个字符的基本名称文件。请注意,此正则表达式适用于全名,包括路径。