查找命令的正则表达式以匹配具有非空文件扩展名的文件
Regex for find command to match files with a non-empty file extension
我有一系列要清理的文件,它们是已轮换的 .log 文件。示例:
error.log
access.log
error.log-2016-02-05
access.log.1
debug.log
debug.log--2
正则表达式匹配所有日志文件:
find . -regextype posix-extended -regex '^.*.log.*'
如何只匹配*.log之后有字符的文件?
将最后一次出现的 .*
替换为 .+
。
*
匹配前一个字符的 0 个或多个实例。
+
匹配 1 个或多个实例。
您还需要将 log
之前的 .
转义为 \
,否则它将匹配任何字符,而不仅仅是文字句点。
总之,使用这个:
find . -regextype posix-extended -regex '^.*\.log.+'
其他一些调整也可能有用:
您可能不想匹配文件名为空的文件,因此您还应该将第一个 .*
也切换为 .+
(谢谢,Jan!) .
您可能不想允许文件扩展名为 .log.
的文件(.*log
后的单个 . 字符),因此您应该切换最后的 .+
到 \..+
.
这会给你最后的命令:
find . -regextype posix-extended -regex '^.+\.log\..+'
我有一系列要清理的文件,它们是已轮换的 .log 文件。示例:
error.log
access.log
error.log-2016-02-05
access.log.1
debug.log
debug.log--2
正则表达式匹配所有日志文件:
find . -regextype posix-extended -regex '^.*.log.*'
如何只匹配*.log之后有字符的文件?
将最后一次出现的 .*
替换为 .+
。
*
匹配前一个字符的 0 个或多个实例。+
匹配 1 个或多个实例。
您还需要将 log
之前的 .
转义为 \
,否则它将匹配任何字符,而不仅仅是文字句点。
总之,使用这个:
find . -regextype posix-extended -regex '^.*\.log.+'
其他一些调整也可能有用:
您可能不想匹配文件名为空的文件,因此您还应该将第一个
.*
也切换为.+
(谢谢,Jan!) .您可能不想允许文件扩展名为
.log.
的文件(.*log
后的单个 . 字符),因此您应该切换最后的.+
到\..+
.
这会给你最后的命令:
find . -regextype posix-extended -regex '^.+\.log\..+'