Shell腳本:從包含一堆文本文件的目錄中找出包含某關鍵字的文件

#!/usr/bin/env bash
# Author    : 蛙鱖雞鸛狸猿
# create_ts : 2019-11-11
# program   : Search obj among docs under a directory


function search_obj_among_docs() {
    # Search obj among docs under a directory
        # $1: OS directory path
        # $2: Obj to search(pass to built-in `grep`)
    local path=$1
    local path=${path%/}
    local IFS=$'\n'
    # shellcheck disable=SC2045
    for doc in $(ls "${path}")
    do
        if [[ -d "${path}/${doc}" ]]; then
            search_obj_among_docs "${path}/${doc}" "$2"
        else
            # shellcheck disable=SC2002
            grep "$2" "${path}/${doc}" &> /dev/null
            # shellcheck disable=SC2181
            if [[ $? -eq 0 ]]; then
                echo "${path}/${doc}"
            fi
        fi
    done
}


search_obj_among_docs "$1" "$2"
# To take a snack, execute the call below at your terminal:
# ./search_obj_among_docs.sh /etc UUID 2> /dev/null

之所以會寫這麼一個文本文件檢索的腳本,是因爲工作中使用的Terraform工具維護着若干各個同事自定義的.tf配置文件,每次想要修改一些內容時,如果一個文件一個文件地去找會相當麻煩。通過這個腳本,只要傳入配置文件羣所在的文件夾和一個目標關鍵字,就能找到需要修改的單個或者多個配置文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章