2013-10-14 40 views
1

我用爲什麼參數-type d不能在find命令中生效?

$ 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在當前目錄下釋放,但結果包含非文件夾的文件,爲什麼呢?

回答

1

你的大部分命令並不意味着你的想法。特別是,-prune不排除已識別的文件,它只是防止它們進入(在你的情況下,已經由-maxdepth 1保證),而-o的意思是「或」(短路布爾OR),所以您實際上將-print應用於不會滿足您的測試的文件。

我想你想要的是這樣的:

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

它打印.,加上從./.repo./out./release.放下所有目錄。

相關問題