使用prune选项查找的cygwin bash不符合预期

时间:2012-04-24 15:38:47

标签: find cygwin subdirectory

以下两个命令在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种组合。

任何指针?

1 个答案:

答案 0 :(得分:1)

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

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

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