Como capturar a saída do diff do comando find?

0

Estou usando o Ubuntu (Precise 12.04) Eu estou tentando escrever algum script bash para ver se o arquivo é alterado via awk replace usando o comando diff.

Eu fiz um teste com o seguinte:

#! /bin/bash

diff fileA.htm fileB.htm &> /dev/null
if [ $? -ne 0 ]; then
  echo "changed";
else
  echo "not changed";
fi

Funciona, então estou expandindo o script como abaixo:

#! /bin/bash

find . \( -name '*.htm' -o -name '*.html' \) \
-exec sh -c \
"awk '/START_TAG/{f=1;print;while (getline < \"REPLACEMENT_FILE.tmp\"){print}}/END_TAG/{f=0}!f' \"{}\" > \"{}.awk\"; diff \"{}\" \"{}.awk\" &> /dev/null; \
if [ $? -ne 0 ]; then\
  echo \"{} changed\"; \
else \
  echo \"{} not changed\"; \
fi" \;

O awk está funcionando, e o comando diff também está funcionando, mas não consegui a saída de diff & > / dev / null e capture na minha declaração if.

Estou assumindo que, ao executar isso dentro da instrução find -exec, provavelmente preciso alterar algo, mas não sei como fazê-lo.

    
por forestclown 10.07.2014 / 09:27

1 resposta

0

Acho que encontrei o problema, a versão corrigida abaixo:

#! /bin/bash

find . \( -name '*.htm' -o -name '*.html' \) \
-exec sh -c \
$'awk \'/START_TAG/{f=1;print;while (getline < \"REPLACEMENT_FILE.tmp\"){print}}/END_TAG/{f=0}!f\' \"{}\" > \"{}.awk\"; diff \"{}\" \"{}.awk\" &> /dev/null;\n \
if [ $? -ne 0 ]; then\n \
  echo \"{} changed\";\n \
else\n \
  echo \"{} not changed\";\n \
fi'\n \;

Eu preciso adicionar quebras de linha para a instrução if else

    
por 15.07.2014 / 11:31

Tags