Você não deve precisar do loop for
.
find . -name "*.xml" -exec grep "sample_freq" "{}" \; -exec grep "sensor_sernum" "{}" \;
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"
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
Tags bash linux shell-script