2010-12-23 79 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