我正在尝试使用 find 返回在其路径中具有特定目录但在文件路径中的任何位置都没有另一个特定目录的所有文件名。就像是:
myRegex= <regex>
targetDir= <source directory>
find $targetDir -regex $myRegex -print
我知道我也可以通过将一个 find 命令传递到另一个命令来做到这一点,但我想知道如何使用单个正则表达式来做到这一点。
例如,我希望每个文件的路径中都有目录“好”,但无论组合如何,在其路径中的任何地方都没有目录“坏”。一些例子:
/good/file_I_want.txt #Captured
/good/bad/file_I_dont_want.txt #Not captured
/dir1/good/file_I_want.txt #Captured
/dir2/good/bad/file_I_dont_want.txt #Not captured
/dir1/good/dir2/file_I_want.txt #Captured
/dir1/good/dir2/bad/file_I_want.txt #Not captured
/bad/dir1/good/file_I_dont_want.txt #Not captured
请记住,某些文件名可能包含“好”或“坏”,但我只想说明目录名称。
/good/bad.txt #Captured
/bad/good.txt #Not captured
我的研究表明我应该使用 Negative Lookahead 和 Negative Lookbehind。但是,到目前为止,我尝试过的任何方法都没有奏效。一些帮助将不胜感激。谢谢。