El uso de buscar con el comando sh no funciona: más consultas

El uso de buscar con el comando sh no funciona: más consultas

Además de la consulta anterior publicada Usando buscar con sh - el comando no funciona

find . -type f -name '*FW*' -exec grep -iEq 'chmod.*archive|archive.*chmod' {} \; -ls

Este cmd no pudo encontrar los archivos cuando se encuentra el texto "archivo" o "chmod" en varias líneas. Sin embargo, puede escanear los archivos cuando el texto "chmod" y "archive" se encuentran en la misma línea.

Intenté con este comando, pero no proporciona la operación deseada.

1> find . -type f -name '*FW*' -exec grep -iEq 'chmod.*' {} \; -ls -exec grep -iEq '.*archive.*' {} +

¿Por qué este cmd no proporciona la operación deseada?

Intenté con este comando, da el resultado esperado pero falla intermitentemente con este error "buscar: 'pcregrep' terminado por la señal 11'

2> find . -type f -name '*FW*' -exec pcregrep -qM 'chmod.*(\n|.)*archive.*' {} \; -ls

¿Por qué falla con el error?

Respuesta1

Su segundo comando en la pregunta no le brinda el resultado correcto porque el orden de las pruebas que usa findes importante. El comando solo generará resultados para los archivos que contienen la cadena porque se ejecuta chmodel otro comandogrepdespués -ls(y no produce resultados).

Quiere buscar archivos que contengan cadenas chmody archive.

find . -type f -name '*FW*' \
    -exec grep -Fiq chmod {} \; \
    -exec grep -Fiq archive {} \; -ls

Esto llama grep -Fiq chmoda todos los archivos que tienen FWsu nombre, y luego grep -Fiq archivea aquellos en los que el primero grepencontró una coincidencia. Si el segundo greptambién encontró algo, -lssurte efecto.

información relacionada