min*_*ick 6 terminal regex find macos
我正在尝试搜索包含不同图像文件名变体的文件夹:
1_2-300x224.jpg
1_2-600x449.jpg
1_2-600x600.jpg
1_2-768x575.jpg
1_2-802x600.jpg
1_2.jpg
Run Code Online (Sandbox Code Playgroud)
计划是查找并删除以 2-4 位数字 + 'x' + 2-4 位数字结尾的文件。我可以使用表达式在Regexr.*(\d{2,4}x\d{2,4}).jpg
上创建此匹配(此表达式突出显示除 之外的所有内容1_2.jpg
)。
但是,运行find . -name ".*(\d{2,4}x\d{2,4}).jpg"
不会返回任何结果。
我很困惑!
这里有几个问题。首先,正如 John 提到的,-name
使用 glob 进行子字符串匹配,您需要使用-regex
,其次,存在正则表达式方言不兼容。默认情况下,GNU find 使用 Emacs 正则表达式,BSD find 使用 posix-basic 正则表达式。如果您已find.info
安装,可以在此处阅读有关它的更多信息:
info find.info 'Reference' 'Regular Expressions' 'emacs regular expression'
Run Code Online (Sandbox Code Playgroud)
可以在此处找到支持的正则表达式方言:
info find.info 'Reference' 'Regular Expressions'
Run Code Online (Sandbox Code Playgroud)
这里:
info find.info 'Reference' 'Regular Expressions' 'emacs regular expression'
Run Code Online (Sandbox Code Playgroud)
您可以使用 GNU find 使您的表达式像这样工作posix-extended
:
find . -regextype posix-extended -regex '.*[0-9]{2,4}x[0-9]{2,4}.jpg'
Run Code Online (Sandbox Code Playgroud)
输出:
info find.info 'Reference' 'Regular Expressions'
Run Code Online (Sandbox Code Playgroud)
我无法访问 BSD find,但我认为这应该可行:
find -E . -regex '.*[0-9]{2,4}x[0-9]{2,4}\.jpg'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22329 次 |
最近记录: |