列出具有指定深度的文件夹的所有子目录
List all subdirectories of a folder with with an specified depth
我想列出深度仅为 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
-./input/Neisseria_meningitidis/200
-./input/Neisseria_meningitidis/50
-./input/Neisseria_meningitidis/100
-./input/Neisseria_meningitidis/150
这是我想要的输出,在 centOS 中,输出包含这些列表以及一些其他深度更长的目录。
另一件有趣的事情是当我 运行
./input -mindepth 2 -maxdepth 2 -type d
在我的命令提示符屏幕中,它再次为我提供了正确答案,但在 bash 文件中没有。
我真的很困惑,无论我搜索什么,我都没有找到 mindepht 标志的任何替代品。
它应该可以工作,但如果由于某种原因它不工作,那么您可以使用这个 glob 模式:
printf "%s\n" ./input/*/*/
./input/*/*/
将匹配 input
目录
中的所有 2 级深层目录
我想列出深度仅为 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
-./input/Neisseria_meningitidis/200
-./input/Neisseria_meningitidis/50
-./input/Neisseria_meningitidis/100
-./input/Neisseria_meningitidis/150
这是我想要的输出,在 centOS 中,输出包含这些列表以及一些其他深度更长的目录。
另一件有趣的事情是当我 运行
./input -mindepth 2 -maxdepth 2 -type d
在我的命令提示符屏幕中,它再次为我提供了正确答案,但在 bash 文件中没有。
我真的很困惑,无论我搜索什么,我都没有找到 mindepht 标志的任何替代品。
它应该可以工作,但如果由于某种原因它不工作,那么您可以使用这个 glob 模式:
printf "%s\n" ./input/*/*/
./input/*/*/
将匹配 input
目录