Recientemente recibí este findmensaje, pero no puedo explicar de dónde proviene la diferencia de los dos siguientes:
Ejemplo 1
[root@centos share]# find . -exec grep -i "madis" {} /dev/null \;
./names:Madison Randy:300:Product Development
Ejemplo 2
[root@centos share]# find . -exec grep -i "madis" {} \;
Madison Randy:300:Product Development
Como puede ver, en el primero está el archivo específico del que deriva esta cadena y, hasta ahora, realmente no puedo descubrir por qué sucede esto.

/dev/nulles para asegurarse de que todo lo que se agrega no se encontrará en el/dev/nullarchivo (vacío) , de modo que solo se eliminen las ubicaciones correctas"/dev/nullno pierde tiempo buscando en un archivo ficticio no vacío. Y finalmente, la intención de buscar/dev/nulles obvia para aquellos familiarizados con este idioma.man grep:La diferencia resulta de llamar a grep con uno o dos argumentos de archivo en los dos casos. En lugar de agregar
/dev/null, puede llamargrepcon el argumento-H. Tal vez el/dev/nullcomportamiento es más ampliamente compatible.fuente
grep -Hno es portátil: el/dev/nulltruco funciona sin GNU grep.El primer ejemplo es equivalente a ejecutar grep sobre dos archivos para cada archivo encontrado como resultado de la
findexpresión. Por ejemplo, sifindencuentra tres archivosa.txt,b.txtyc.txtluegogrepse ejecutan comoA lo que
grepse mostrará el nombre de archivo para el que coincide la salida. Como nada coincidirá con / dev / null, se garantiza que el nombre de archivo del primer archivo se imprimirá si coincide.Mientras que el segundo ejemplo es equivalente a
En cuyo caso, el nombre del archivo no se imprimirá para las coincidencias ya que solo hay un argumento.
fuente