Buscar un file en Unix para una cadena dada y luego otro set de cadenas dentro de este file e imprimir properties de file también

Estoy usando el command para search files que miran desde un directory determinado en Unix, files que terminan *.sas y que contienen la cadena DB2 . A continuación, deseo search el set de files resultante para las cadenas DSN= o DATASRC= y también imprimir la línea que contiene estas cadenas. Este es el command FInd que estoy usando:

 find '/shrproj/' -type f -name '*.sas' -exec grep -il 'DB2' {} \; 2> /dev/null | xargs egrep -Ri 'DSN=|DATASRC=' 

Esto me da la salida deseada:

 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" 

Pero ahora también quiero imprimir las properties del file (usando la opción -ls) siguiendo el resultado anterior, es decir, lo siguiente es lo que pretendo lograr:

 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas: ,"DSN=%UPCASE(&the_database.)" 61522 19 -rwxrwsr-x 1 sas sas 18546 Jun 2 2010 /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas 

Las Propiedades del file en la última línea anterior son las mismas cuando se usa el command find con la opción -ls.

  find /shrproj/files/stp_code/aea_aat_stp/icrv3/bin/macro/cnct_2_eaw.sas -ls 

Entonces, ¿cómo logro esto para todos y cada uno de los files usando el primer command Buscar que estoy usando arriba?

Por favor hagamelo saber. Gracias.

Sólo:

 find '/shrproj/' -type f -name '*.sas' \ -exec grep -iq 'DB2' {} \; \ -exec grep -ie DSN= -e DATASRC= {} \; \ -ls 

Sugeriría algo similar a esto (no puedo hacer todo de una sola línea) 😉

 OLDIFS="$IFS" IFS=$'\n' for i in $(find '/shrproj/' -type f -name '*.sas'); do G1="$(grep -il 'DB2' "$i")" if [ -n "$G1" ]; then G2="$(egrep -Ri 'DSN=|DATASRC=' "$i")" if [ -n "$G2" ]; then echo "$G1" echo "$G2" ls -l "$i" fi fi done IFS="$OLDIFS"