Someone asked如何查找某些文件类型的所有文件,其中一个答案是:
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
我试图更好地理解反斜杠。第一个反斜杠是说将时间段视为字面,而不是模式匹配,是吗?如果是这样,为什么需要第二个反斜杠,第三个呢?似乎第二个反斜杠就是说(作为文字字符。
答案 0 :(得分:2)
\(
和\|
只是默认的正则表达式(emacs)语法,需要转义括号和替换|
。您可以使用高级正则表达式类型,避免过度转义:
find /path/to -regextype posix-egrep -regex ".*\.(jpg|gif|png|jpeg)" > log
根据man find
:
-regextype type
更改命令后发生的-regex和-iregex测试所理解的正则表达式语法 线。目前实现的类型是emacs(这是默认值),posix-awk,posix-basic,posix-egrep和posix-extended。