Desde la página del findutils findmanual :
Si no se da ninguna expresión, -printse usa la expresión (pero probablemente debería considerar usarla -print0, de todos modos).
( -printes una findexpresión)
La documentación POSIX confirma esto:
Si no hay una expresión presente, -print se utilizará como expresión.
Entonces find .es exactamente equivalente a find . -print; el primero no tiene expresión, por lo que -printse agrega internamente.
La explicación de lo que -printhace viene más abajo en la página de manual:
-print
Cierto; imprima el nombre completo del archivo en la salida estándar, seguido de una nueva línea. Si está canalizando la salida de find a otro programa y existe la menor posibilidad de que los archivos que está buscando puedan contener una nueva línea, entonces debería considerar seriamente usar la -print0opción en lugar de -print. Consulte la sección de NOMBRES DE ARCHIVO INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.
-printEs la acción por defecto . Algunosfindpredicados se consideran acciones en lugar de filtros o condiciones . Por ejemplo,-type fno es una acción.-execes una acción aunque también se puede usar como condición.Las acciones incluyen
-print,-execy-ok. Algunasfindimplementaciones tienen otros predicados de acción no estándar como el-print0,-printf,-execdir,-okdir,-ls...Donde ninguna de las acciones
<some-predicates>contener es equivalente a:(tenga en cuenta los paréntesis anteriores que son importantes si hay algunos
-ooperadores).En caso de duda, lo mejor es usar
-printexplícitamente (o-exec printf '%s\0' {} +(o-print0cuando esté disponible) para que la salida pueda ser procesada posteriormente).La
-printacción predeterminada es especificada por POSIX. Algunasfindimplementaciones antiguas requerían una explícita-print, pero por lo general no se encuentran en la actualidad.También tenga en cuenta que algunas
findimplementaciones permiten omitir elfiles, en cuyo caso prefieren buscar en el directorio actual. Es decir, para elloses equivalente a
Sin embargo, eso no es estándar, por lo que es mejor evitarlo.
En el extremo más detallado (y útil) del espectro, algunas
findimplementaciones también permiten pasar rutas de archivos como argumento a una-fopción como en:Son las únicas
findimplementaciones que permiten pasar rutas de archivos arbitrarias afind. Otras implementaciones no pueden aceptar rutas de archivos como!o-print... entoncesfind "$file" -print(o inclusofind -- "$file" -print) supone$fileque no es el nombre de unfindpredicado (u opción en el primer caso).Desafortunadamente, eso tampoco es estándar ni portátil.
fuente
Son lo mismo, ambos escriben toda la jerarquía de directorios desde el directorio actual.
Desde POSIX busque documentación :
fuente
En Linux no hay diferencia, pero otros sistemas (como AIX, por ejemplo) lo necesitan
-printsi desea que la salida del comando se muestre en su pantalla.fuente
findno lo necesita. AIX ha sido POSIX conforme por décadas.Durante muchos años, el comando find no tuvo una acción predeterminada. Un error común fue olvidar agregar la opción -print a su comando de búsqueda. Todavía hoy en día lo escribo por costumbre.
Pero en algún momento se añade como la acción por defecto por lo que ahora
find ., yfind . -printson equivalentes.fuente
A veces es útil usarlo
-printexplícitamente cuando está realizando otra acción para que el nombre del archivo se muestre a medida que se realiza esa acción.sería similar a
donde
-printcorresponde a-v. Si no incluye-print, los nombres de los archivos no se muestran.Para que el
rmcomando sea aún más similar, por cierto, emita primero este comando Bashlo que hará que los
*archivos de puntos coincidentes (ocultos).fuente