buscar -imprimir0 | xargs -0 grep no funciona como se esperaba en Ubuntu 10.04

buscar -imprimir0 | xargs -0 grep no funciona como se esperaba en Ubuntu 10.04

Tengo un problema un poco extraño.

Si corro:

find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' | xargs grep -i users

Recibo una gran cantidad de errores para nombres de archivos que contienen espacios, pero también algunos archivos coinciden.

Sin embargo, si intento lo siguiente para que los nombres de archivos con espacios se manejen correctamente, no se devuelven coincidencias:

find . -iname '*.php' -o -iname '*.pl' -o -iname '*.html' -print0 | xargs -0 grep -i users

¿Qué estoy haciendo mal? El segundo comando debería devolverme al menos los mismos archivos coincidentes que el primero, pero no obtengo ninguna coincidencia.

Respuesta1

Y la respuesta es:

find . \( -iname '*.php' -o -iname '*.pl' -o -iname '*.html' \) -print0 | xargs -r0 grep -i users

Esto funciona. No lo había visto antes pero un colega me habló de él.

Respuesta2

No necesitas print0 y xargs, esta funcionalidad ya está integrada en find:

find . -iname "*.php" -o -iname "*.pl" -o -iname "*.html" -exec grep -i users {} + 

información relacionada