Check the new version here

Popular channels

Bash script para busquedas - personalizado

Solo quiero compartir un bash script que he creado para aprender un poco, ademas para personalizar los resultados cuando buscaba algun texto en varios archivos, usando la funcionalidad del comando grep, pero con un resultado mas presentable..


#!/usr/bin/env bash
MY_PATH="`( cd "$MY_PATH" && pwd )`"
exMyPath=$MY_PATH'/'
reMyPath=' - '
counter=0
ic=0
array=( "svn-base" "wc.db" ".jar" ".class" ".war")

toSearch=`find ${exMyPath} -type f`

for file in ${toSearch}; do
    if [ ! -z "$2" ]; then
        if ! [[ $file = *$2* ]]
        then
            continue
        fi
    fi

    if [ -d $file ] ; then
        continue        
    fi
    ## Do not check .svn-base files    
    skipMe=false
    for iSkip in "${array[@]}"; do
        if [[ $file = *$iSkip* ]]
        then
            skipMe=true
        fi
    done
    if [ $skipMe = true ]; then
        continue
    fi
    linenumber=0
    dos="////"
    uno="//"
    file=${file/$dos/$uno}
    if [[ $file = *$dos* ]]
    then
        echo "Je te trouve "$file
    fi
    if (grep -q $1 ${file}); then
        echo "$(tput setaf 10)${file/$exMyPath/$reMyPath}$(tput sgr0)"
        printf 'nn'

        count=$(grep -c $1 ${file})
        let counter+=count

        old_IFS=$IFS      # save the field separator           
        IFS=$'n'     # new field separator, the end of line           
        for line in $(cat ${file})          
        do  
            let linenumber+=1
            if [[ $line = *$1* ]]
            then
                let ic+=1
                salida=${line/$1/'33[38;5;148m'$1'33[39m'}
                printf "%4s -- $(tput setaf 14)%4s :=> $(tput sgr0) ${salida} n" "${ic}" "${linenumber}" 
                ##echo "${ic} => ${linenumber} : ${line}"
                   if [ $((ic%15)) -eq 0 ]
                   then
                       echo "Appuyez sur Entrée pour continuer"
                       read input
                   fi
               fi
               
        done          
        IFS=$old_IFS     # restore default field separator 
        echo "-----------------------------------------------------------------"
        printf 'nn'
    fi
done
echo -e "String 33[38;5;148m$133[39m repeated: x1B[35m${counter}x1B[0m"
  


0
0
0
0No comments yet