我用过
$ 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 out和release之外的文件夹,但结果包含非文件夹文件,为什么?
答案 0 :(得分:1)
你的大部分命令并不意味着你的想法。特别是,-prune
不排除已识别的文件,它只是阻止它们进入(在您的情况下,-maxdepth 1
已经保证了这种情况),并且-o
表示“或“(短路布尔OR),因此您实际上将-print
应用于不满足您的测试的文件。
我认为你想要的是:
find . -maxdepth 1 -not -name .repo -not -name out -not -name release -type d
除了.
,.
和./.repo
之外,打印./out
以及./release
中的所有目录。
答案 1 :(得分:0)
你想要修剪的东西来自-prune。 How to use '-prune' option of 'find' in sh?