Desde la página del findutils
find
manual :
Si no se da ninguna expresión, -print
se usa la expresión (pero probablemente debería considerar usarla -print0
, de todos modos).
( -print
es una find
expresió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 -print
se agrega internamente.
La explicación de lo que -print
hace 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 -print0
opció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.
-print
Es la acción por defecto . Algunosfind
predicados se consideran acciones en lugar de filtros o condiciones . Por ejemplo,-type f
no es una acción.-exec
es una acción aunque también se puede usar como condición.Las acciones incluyen
-print
,-exec
y-ok
. Algunasfind
implementaciones 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
-o
operadores).En caso de duda, lo mejor es usar
-print
explícitamente (o-exec printf '%s\0' {} +
(o-print0
cuando esté disponible) para que la salida pueda ser procesada posteriormente).La
-print
acción predeterminada es especificada por POSIX. Algunasfind
implementaciones antiguas requerían una explícita-print
, pero por lo general no se encuentran en la actualidad.También tenga en cuenta que algunas
find
implementaciones 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
find
implementaciones también permiten pasar rutas de archivos como argumento a una-f
opción como en:Son las únicas
find
implementaciones 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$file
que no es el nombre de unfind
predicado (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
-print
si desea que la salida del comando se muestre en su pantalla.fuente
find
no 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 . -print
son equivalentes.fuente
A veces es útil usarlo
-print
explí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
-print
corresponde a-v
. Si no incluye-print
, los nombres de los archivos no se muestran.Para que el
rm
comando sea aún más similar, por cierto, emita primero este comando Bashlo que hará que los
*
archivos de puntos coincidentes (ocultos).fuente