以下两个命令在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种组合。
任何指针?
答案 0 :(得分:1)
afaik,-path不接受正则表达式。我想你想要做的是找到所有目标文件(.*.o
)并排除所有公共目录(.*/common/.*
):
find . -regex '.*.o' -and -not -regex '.*/common/.*'
如果需要,您可以使用-iregex
使其全部不区分大小写。