我尝试使用find
util查找文件,我想查找所有*.js
- 除特殊目录中的文件之外的文件。我试着用命令找到:
find ./ -regex '\.((?\!node_modules).)*\.js'
但这种情况一无所获。
这个正则表达式适用于Sublime Text 3,我在那里测试过它。
P.S。我知道用下面的其他选项解决。但我想知道如何用正则表达式解决问题
find ./ -path *node_modules -prune -o -name *.js
答案 0 :(得分:2)
目前你不能这样做。
GNU Find支持几种正则表达式类型,但它们都不支持零宽度断言。
ID_AFSTAND: <asp:Label ID="ID_AFSTANDLabel" runat="server" DataSourceId="dtsrcAFstandKilometer" Text='<%# Bind("AFSTAND") %>' DataValueField="ID_AFSTAND" DataTextField="AFSTAND" AppendDataBoundItems="true" /> <asp:ObjectDataSource ID="dtsrcAFstandKilometer" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetDataAfstand" TypeName="InschrijvenTableAdapters.tblAfstandenTableAdapter"></asp:ObjectDataSource> <br />
对于你的任务,你需要一个lookbehind断言, 它尚不支持。
另一个选择是使用find2perl将查找表达式转换为perl程序, 这与表达式相同。
您可以使用此程序检查您的表达式是否适用于PCRE和预见/后置断言。
答案 1 :(得分:1)
您的find
实施的正则表达式引擎似乎并不支持环视。 (请参阅man find
,您可能会找到@IgorChubin解释的内容。)
您仍然可以使用! -regex
排除不需要的模式,例如:
find . ! -regex '\./node_modules/.*' -name '*.js'