列出具有指定深度的文件夹的所有子目录

时间:2015-02-09 18:07:00

标签: linux bash centos

我想列出文件夹的所有子目录,其深度仅为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有效,但不是-mindepth。

在Fedora中更具体,输出如下:

- ./input/Staphylococcus / 200

- ./input/Staphylococcus / 50

- ./input/Staphylococcus / 100

- ./input/Staphylococcus / 150

- /输入/ Neisseria_meningitidis / 200

- /输入/ Neisseria_meningitidis / 50

- /输入/ Neisseria_meningitidis / 100

- /输入/ Neisseria_meningitidis / 150

这是我的欲望输出,在centOS中输出包含这些列表以及其他一些深度较长的目录。

另一个有趣的事情是我跑

./ input -mindepth 2 -maxdepth 2 -type d

在我的命令提示符屏幕中,它再次给出了正确的答案,但不是在bash文件中。

无论我搜索什么,我都很困惑,我没有为mindepht旗帜找到任何替代品。

1 个答案:

答案 0 :(得分:2)

它应该可以工作,但如果由于某种原因它不起作用,那么你可以使用这个glob模式:

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

./input/*/*/将匹配input目录

中的所有2级深层目录