¿Cómo capturar la salida de diferenciación del comando find exec?

¿Cómo capturar la salida de diferenciación del comando find exec?

Estoy usando Ubuntu (Precise 12.04). Estoy intentando escribir algún script bash para ver si el archivo se cambia mediante awk replace usando el comando diff.

Hice una prueba con lo siguiente:

#! /bin/bash

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

Funciona, así que estoy ampliando el script como se muestra a continuación:

#! /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" \;

El awk está funcionando y el comando diff también está funcionando, pero no pude obtener el resultado de diff &> /dev/null y capturarlo en mi declaración if.

Al ejecutar, supongo que dentro de la declaración find -exec probablemente necesito cambiar algo allí, pero no estoy seguro de cómo hacerlo.

Respuesta1

Creo que encontré el problema, la versión solucionada a continuación:

#! /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 \;

Necesito agregar saltos de línea para la declaración if else

información relacionada