我们如何迭代给定目录的子目录并在bash中的子目录中获取文件。我可以使用grep命令吗?
答案 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
更好。