2015-02-09 38 views
1

我想列出其深度僅爲2的文件夾的所有子目錄。到目前爲止,通過查看先前的問題和用戶的答案,我來到這個代碼,列出具有指定深度的文件夾的所有子目錄

i=0     
for directory in `find ./input -maxdepth 3 -type d -mindepth 2 ` 
    do 
    arr[i]=$directory 
    let "i += 1" 
echo $directory 
done 

我在Fedora機器上運行此代碼,它給了我正確的答案,但是當我在centOS中運行它時,它不工作。其實-maxdepth的作品,但不是 - 最後的。

是在Fedora的更具體的輸出是這樣的:

-./input/金/ 200

-./input/金/ 50

-./input/金/ 100

-./input/金/ 150

-./input/Neisseria_meningitidis/200

-./input/Neisseria_meningitidis/50

-./input/Neisseria_meningitidis/100

-./input/Neisseria_meningitidis/150

這是我的願望輸出,並在CentOS的輸出包含這些列表以及其他深度較長的其他目錄。

另一個有趣的事情是,當我在命令提示符下運行屏幕

./input -mindepth 2 -maxdepth 2型d

它給了我一次正確的答案,但不是在bash文件。

我真的很困惑,無論我搜索我沒有找到任何替代mindepht標誌。

+0

試圖重現所有2級深度的目錄。 .. – 2015-02-09 18:10:07

+0

無法重現此,對不起。你使用哪個版本的centOS? find -version的輸出是什麼? – 2015-02-09 18:11:20

+0

它不運行時的輸出是什麼? – 2015-02-09 18:12:48

回答

2

它應該工作,但如果由於某種原因,它不工作然後你可以使用這個glob模式:

printf "%s\n" ./input/*/*/ 

./input/*/*/將匹配裏面input目錄

+1

請注意最後的斜槓:它將結果限制爲目錄只有 – 2015-02-09 18:50:36

+0

謝謝你的回答,但它不會「 t工作:( – user2373198 2015-02-10 08:55:09

+0

這是一個很好的測試命令,確保你使用的是BASH,並且**不起作用**是沒有意義的,除非你提供了錯誤的所有細節 – anubhava 2015-02-10 08:57:59

相關問題