2010-12-23 80 views
3

我们如何迭代giver目录的子目录并在bash中的那些子目录中获取文件。我可以使用grep命令来做到这一点吗?在bash中遍历子目录

回答

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)。

2

好了,你可以,使用grep

grep -rl^/path/to/dir 

但是,为什么? find比较好。

+0

一个字:家庭作业 – 2016-02-23 11:36:07