Como estender meu script bash?

0

Meu script

#!/bin/bash

for file in *.xml; do
find . -name "*.xml" -exec grep "sample_freq" "{}" \;
find . -name "*.xml" -exec grep "sensor_sernum" "{}" \;
done

Funciona perfeitamente para uma pasta

      <sample_freq>131072</sample_freq>
        <sample_freq>131072</sample_freq>
        <sample_freq>131072</sample_freq>
        <sample_freq>131072</sample_freq>
        <sample_freq>131072</sample_freq>
        <sensor_sernum>0</sensor_sernum>
        <sensor_sernum>0</sensor_sernum>
        <sensor_sernum>255</sensor_sernum>
        <sensor_sernum>237</sensor_sernum>

Mas o problema é que eu tenho sete pastas no diretório, cada uma delas tem um arquivo xml. É possível estender meu script para que ele entre em todas as sete pastas e obtenha as informações de cada uma delas?
Conteúdo do meu diretório milenko @ milenko-HP-Compaq-6830s: ~ / Documentos / magnetotellurics / MT8 $ ls EDI´s meas_2015-06-29_19-18-28 meas_2015-06-29_19-26 -

58  meas_2015-06-29_19-47-58  mys.sh   n.sh
meas_2015-06-29_19-03-00  meas_2015-06-29_19-22-58  meas_2015-06-29_19-30-58  meas_2015-06-29_20-39-58

Eu tentei o que a choroba me aconselhou a fazer

#!/bin/bash

for file in ./*; do                                                                                      
    grep 'sample_freq'   "$file"
    grep 'sensor_sernum' "$file"
done

Mas

grep: ./EDI´s: Is a directory
grep: ./EDI´s: Is a directory
grep: ./meas_2015-06-29_19-03-00: Is a directory
grep: ./meas_2015-06-29_19-03-00: Is a directory
grep: ./meas_2015-06-29_19-18-28: Is a directory
grep: ./meas_2015-06-29_19-18-28: Is a directory
grep: ./meas_2015-06-29_19-22-58: Is a directory
grep: ./meas_2015-06-29_19-22-58: Is a directory
grep: ./meas_2015-06-29_19-26-58: Is a directory
grep: ./meas_2015-06-29_19-26-58: Is a directory
grep: ./meas_2015-06-29_19-30-58: Is a directory
grep: ./meas_2015-06-29_19-30-58: Is a directory
grep: ./meas_2015-06-29_19-47-58: Is a directory
grep: ./meas_2015-06-29_19-47-58: Is a directory
grep: ./meas_2015-06-29_20-39-58: Is a directory
grep: ./meas_2015-06-29_20-39-58: Is a directory
find . -name "*.xml" -exec grep "sample_freq" "{}" \;
    grep 'sample_freq'   "$file"
    grep 'sensor_sernum' "$file"
    grep 'sample_freq'   "$file"
    grep 'sensor_sernum' "$file"
    
por MikiBelavista 19.11.2015 / 18:26

2 respostas

0

Você não deve precisar do loop for .

find . -name "*.xml" -exec grep "sample_freq" "{}" \; -exec grep "sensor_sernum" "{}" \;
    
por 19.11.2015 / 19:01
0

Não é necessário find aqui, basta usar a variável $ file, mas expanda o curinga que inclui o caminho:

for file in folder*/*.xml ; do                                                                                       # */ fix SE highlighting bug
    grep 'sample_freq'   "$file"
    grep 'sensor_sernum' "$file"
done
    
por 19.11.2015 / 18:34