0

下面的两个命令在 cygwin 下的 bash 中产生完全相同的文件列表:

find ../../../../.. -name "*.o" -and -path "*/common/*"
find ../../../../.. -name "*.o" -and -path "*/common/*" -prune

此列表包括以下文件:

../../../../../platform/abc/common/ppng.o
../../../../../platform/abc/common/variant/pxx.o

该列表不包括路径名中没有“common”的任何文件。

我想要做的是在所有目录中找到(并最终消除)目标文件,任何具有“通用”目录组件的文件除外。我已经尝试了大约 25 种其他组合,但没有运气。

任何指针?

4

1 回答 1

1

afaik,-path 不采用正则表达式。我认为您要做的是找到所有目标文件(.*.o)并排除所有公共目录(.*/common/.*):

find . -regex '.*.o' -and -not -regex '.*/common/.*'

如果需要,您可以使其全部不区分大小写-iregex

于 2012-04-24T15:48:04.547 回答