find – ¿Cómo evito que un hallazgo descienda a los directorios encontrados?

Pregunta:

Quiero encontrar todos los directorios con una cadena específica para poder hacer otra búsqueda en los archivos que contiene.

Así que no quiero perder el tiempo en ./my-search-term/dir/my-search-term etc.

¿Cómo puedo dejar de recurrir cuando encontré el primer directorio de mi término de búsqueda?

Respuesta:

La acción -prune hace que la find no se repita en el directorio. Puede combinarlo con otra acción como -exec (el orden de -prune y -exec no importa, siempre que -prune se ejecute de cualquier manera).

find . -name my-search-term -prune -exec find {} … \;

Tenga en cuenta que anidar la find dentro de una find -exec puede ser un poco problemática: no puede usar -exec en la find interna, porque el terminador sería visto como un terminador por la find externa. Puede solucionarlo invocando un shell, pero tenga cuidado con las citas.

find . -name my-search-term -prune -exec sh -c '
    find "$@" … -exec … {\} +
' _ {} +

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım