Linux_shell腳本_遍歷文件夾下所有文件


參考:lunar1983的專欄

實現:從給定目錄樹中grep出含制定字符串的行,並給出所在路徑

代碼如下所示:

#!/bin/sh -
if [ $# -ne 2 ]
        then echo "usage traverse <dir> <str>"
        exit
fi
{
function ergodic(){
for file in ` ls $1`
do
                if [ -d $1"/"$file ] #如果 file存在且是一個目錄則為真
                then
                      ergodic $1"/"$file $2
                else
                      local path=$1"/"$file #得到文件的完整的目錄
                      local name=$file       #得到文件的名字
                      if [[ `cat $path | grep $2` ]]
                            then echo "" 
                                echo LOC:$path

                      fi
                      cat –n $path | grep $2
               fi

done
}
}
ergodic $1 $2

效果圖:

image

還有一種方法,可以直接調用find指令完成查找文件,將結果輸出至grep(參考APUE(3),p190)

對於find,我們使用選項-type f限制輸出列表只包含普通文件。

這樣做的目的是,grep命令不能在目錄中搜索模式,我們也想避免不必要的出錯消息。

find . -type f -print | xargs grep STU

image

ps:如果要想在壓縮文件內尋找文本片段,可以使用:

find . -type f -print | xargs bzgrep STU

done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM