2015-02-09 42 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

相关问题