从find中排除子目录

时间:2014-08-07 17:06:07

标签: macos shell terminal find

java -jar ~/Downloads/simian-2.3.35/bin/simian-2.3.35.jar files $(find ~/App/Classes/ -type f -name "*.m"  -not -path  "Lib/excludethisdir/*")

我正在尝试运行simian并将文件参数传递给它,但是不包括目录就不起作用了。 Lib目录包含在类

任何人都可以指出它为什么不起作用(命令运行,但不排除)

2 个答案:

答案 0 :(得分:9)

你嵌套的find命令应该是:

find ~/App/Classes/ -type f -name "*.m"  -not -path "./Lib/excludethisdir/*"

即。在排除的路径之前添加./

甚至更好:

find ~/App/Classes/ -path "./Lib/excludethisdir/*" -prune -o -type f -name "*.m" -print

答案 1 :(得分:0)

不是,请回答! 我有以下类似的结构。

$ tree ./tmp
./tmp
├── file.ext
├── file.other_ext
└── inner_tmp
    ├── inner_file.ext
    └── inner_file.other_ext

1 directory, 4 files
$

当我尝试

$ find ./tmp -type f -name '*.ext' -not -path './inner_tmp/'

OR

$ find ./tmp -path './inner_tmp/*' -prune -o -type f -name '*.ext' -print

我得到以下信息:

./tmp/inner_tmp/inner_file.ext
./tmp/file.ext

问题是:为什么inner_tmp目录包含在结果中?我在这里想念什么?