正则表达式 - 发现不匹配的文件(regex - find files that don't

2019-07-21 02:50发布

我有大部分在类似格式的目录列表./[foobar]/ 。 然而,一些被格式化像./[foo] bar/

我想用find (或其他一些公用事业我的壳报价)去寻找那些匹配的第一图案目录(即具有方括号外面的文字)。 到现在为止,我无法找到一个方法来“逆”我的模式。

任何方法可以做到这一点?

Answer 1:

你可以找到结合使用grep和它的-v选项。 find . -type d | grep -v "[foobar]"



Answer 2:

find支持通过否定的方式!-not 。 后者是不符合POSIX标准。 为了使用! 你有反斜线先于它或把它放在单引号内。



Answer 3:

一个简单的正水珠会在这个特殊的例子的工作:

$ ls
[a]b [ab]
$ echo \[*\]
[ab]

对于更为复杂的模式可以启用extglob

!(pattern-list)
     Matches anything except one of the given patterns

( 以及类似的水珠 )

或者使用find:

find dir ! -name ...


Answer 4:

find -type d -name '*\]?*'

除非你坚持开括号检验...



文章来源: regex - find files that don't match
标签: regex bash find