2017-03-26 36 views
0

我需要找到文件并忽略文件,如“^ 02”(这是正则表达式)。如果“^ 02”是目录,那么我需要忽略目录内的每个文件。我不知道该怎么做。我试图使用类似的东西。Bash发现与忽略

find . -type f -not -regex "^9" -o -prune 

但它不起作用。

回答

2

请注意,正则表达式不使用^$,因为它始终必须匹配整个字符串。此外,如果find的第一个参数是.,则路径以./开头,因此您也需要包含它。

find -type f -not -regex '\./02.*' 

如果你想排除甚至子目录,使用.*/02.*的正则表达式。

find . -type d -regex '\./02.*' -prune -false -or -type f 

如果您只想排除匹配模式的目录,但要保留这些文件,你需要使用prune只为匹配正则表达式目录,并-false从列表中删除目录

另外,对于简单的情况,您可以使用模式而不是正则表达式。这样,您可以使用-name来包含子目录:

find . -name '02*' -prune -false -or -type f