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 {} +