Bry*_*anK 2 find regular-expression
我在find
使用正则表达式标志时遇到了很多麻烦。我egrep
自己使用在文件中查找日期模式,如下所示:
egrep '[0-9]{4}-[0-9]{2}-[0-9]{2}'
Run Code Online (Sandbox Code Playgroud)
这将返回格式为 CCYY-MM-DD 的日期就好了。我正在尝试将这种相同的模式与find
. 我试过了:
find . -regextype egrep -regex "[0-9]{4}-[0-9]{2}-[0-9]{2}"
find . -type f -regex "[0-9]{4}-[0-9]{2}-[0-9]{2}"
Run Code Online (Sandbox Code Playgroud)
试图反斜杠大括号......
find . -type f -regextype egrep -regex "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}"
Run Code Online (Sandbox Code Playgroud)
所有这些似乎都没有返回任何东西。我没有收到错误消息,没有输出......我什至试图将输出重定向到一个文件,但没有......
很难找到使用find
正则表达式的好资源。如果有人可以提供帮助,我将不胜感激。我不反对任何类型的正则表达式find
支持,尽管我喜欢egrep
因为-o
标志只返回匹配项,而不是整行。但实际上,我只需要find
在目录中查找文件名中与上述模式匹配的所有文件。
您的示例混合了单引号和双引号。find 需要一个匹配整个文件名的模式,所以你想用'*'开始/结束该模式。
这将找到具有您描述的模式的所有文件:
find yourpath -name "*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*"
Run Code Online (Sandbox Code Playgroud)
但是如果你想使用regextype,你需要“posix-egrep”,并注意regex需要匹配整个路径,
find yourpath -regextype posix-egrep -regex ".*[0-9]{4}-[0-9]{2}-[0-9]{2}.*"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5071 次 |
最近记录: |