在bash中遍历子目录

时间:2010-12-23 04:28:24

标签: bash grep

我们如何迭代给定目录的子目录并在bash中的子目录中获取文件。我可以使用grep命令吗?

3 个答案:

答案 0 :(得分:7)

这将深入一个子目录。内部for循环将遍历封闭的文件和目录。 if语句将排除目录。您可以设置选项以包含隐藏文件和目录(shopt -s dotglob)。

shopt -s nullglob
for dir in /some/dir/*/
do
    for file in "$dir"/*
    do
        if [[ -f $file ]]
        then
            do_something_with "$file"
        fi
    done
done

这将是递归的。您可以使用-maxdepth选项限制深度。

find /some/dir -mindepth 2 -type f -exec do_something {} \;

使用-mindepth排除当前目录中的文件,但它包含下一级(及以下,取决于-maxdepth)的文件。

答案 1 :(得分:2)

您可能正在寻找find(1)

答案 2 :(得分:2)

嗯,你可以使用grep:来做到这一点

grep -rl ^ /path/to/dir

但为什么呢? find更好。