¿Solaris equivalente para profundidad / poda?

10

Estoy tratando de encontrar algunos archivos dentro de un directorio. Por defecto, la búsqueda commandestá buscando el directorio que he especificado y son subdirectorios.

Traté de usar depth/maxdepthy prune, pero nada ayudó a superar esto. ¿Alguien puede señalar la forma correcta de usar profundidad / poda en Solaris?

Mi código se ve así:

find file_path -depth 1 -name '*.log'

Estoy teniendo el siguiente error:

find: bad option 1
find: [-H | -L] path-list predicate-list
usuario295338
fuente

Respuestas:

15

Estás confundiendo dos opciones no relacionadas que tienen nombres vagamente similares:

  • -depthNo toma ningún argumento. Si está presente, le indica findque procese el contenido de un directorio antes de procesar el directorio en sí.
  • -maxdepth N (donde N es un número entero) limita la recursividad a N niveles de subdirectorios.

La -maxdepthopción es una extensión que se encuentra en algunas versiones de find, pero no en Solaris. Hay un truco para usar solo las opciones estándar findpara procesar un directorio sin recurrir: usar -pruneen subdirectorios, pero excluir el directorio de nivel superior. Dado que la única forma de hacer coincidir el directorio de nivel superior es por nombre, organice el nombre .(que nunca será el nombre de un subdirectorio).

find /directory/to/traverse/. -name . -o \
                              -type d -prune -o \
                              -name '*.log' -print
Gilles 'SO- deja de ser malvado'
fuente
Estaba enfrentando este mismo problema, y ​​esta solución me ayudó. Pasé un día tratando de encontrar una solución para que esto funcione. Grrr, Solaris.
Kevin Teljeur
¿Ve algún problema al usar sed para eliminar /./ find $ {directory} / sh /. -nombre . -o -type d -prune -o -print | sed 's /\/\.\//\//'
Ethan Post
@EthanPost Puedes hacerlo, pero encuentra implementaciones sin -mindepthy -maxdepthson una raza en desaparición. Si su hallazgo tiene -maxdepth, usefind /directory/to/traverse -mindepth 1 -maxdepth 1 -name '*.log'
Gilles 'SO- deja de ser malvado'
@Gilles ¡Solo toma uno para romperlo cuando está creando un marco que puede necesitar ejecutarse en tal circunstancia! ¡Ese mercado puede ser mi pan de cada día! Gracias por la ayuda.
Ethan Post