1

我用了

$ find . -maxdepth 1 \( -path ./.repo -o -path ./out -o -path ./release \) -prune -type d -o -print
.
./external
./anno
./system
./cts
./bionic
./sdk
./abi
./build
./kernel
./hardware
./prebuilts
./MAKE_SUCCESS_FILE
./buildlog
./docs
./prebuilt
./libnativehelper
./bootable
./dalvik
./vendor
./make-export-env
./rawprogram0.xml.bak
./development
./libcore
./device
./frameworks
./pdk
./ndk
./packages
./Makefile
./gdk

在当前目录中仅查找除 .repo 之外的文件夹并发布,但结果包含非文件夹文件,为什么?

4

2 回答 2

1

您的大部分命令并不意味着您认为它会做什么。特别是,-prune不排除已识别的文件,它只是防止它们被归入(在你的情况下已经得到保证-maxdepth 1),并且-o意味着“或”(短路布尔或),​​所以你是实际应用于不满足您的测试-print的文件。

我想你想要的是这样的:

find . -maxdepth 1 -not -name .repo -not -name out -not -name release -type d

打印, 以及除 , 和 之外的所有.目录。../.repo./out./release

于 2013-10-14T02:12:31.483 回答
0

你想要修剪的东西在 -prune 之前。 如何在sh中使用'find'的'-prune'选项?

于 2013-10-14T02:03:01.677 回答