comando de árbol para múltiples incluye y excluye

33

¿Podría darme un ejemplo del uso del comando de árbol para filtrar el resultado de la siguiente manera:

  • hacer caso omiso de los directorios (dicen bin, unitTest)
  • listado único ciertos archivos que tienen extensiones (por ejemplo .cpp, .c, .hpp, .h)
  • proporcionando nombres de ruta completos de solo los archivos resultantes que coinciden con los criterios.
Linda
fuente

Respuestas:

54

Una forma es usar patrones con los interruptores -Iy -P:

tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/

El -fimprime la ruta completa para cada archivo, y -Iexcluye los archivos en el patrón aquí separados por una barra vertical. El -Pconmutador incluye solo los archivos enumerados en el patrón que coinciden con una determinada extensión.


fuente
66
Nota: no incluya barras diagonales finales en su indicador -I, por ejemplo -I bin, no -I bin/.
ThorSummoner
esto comete un errorsed: illegal option -- I
François Romain
4

use findy treecommand que es use find's prunepara excluir directorios de búsqueda y use tree -Ppara buscar el patrón.

Use el interruptor de podar, por ejemplo, si desea excluir el miscdirectorio, simplemente agregue un -path ./misc -prune -oa su comando de búsqueda.

por ej. find . -path ./misc -prune -o -exec tree -P <pattern> {} \;o puedes usar-name "*.cpp" in find

para excluir el uso de múltiples directorios

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o

harish.venkat
fuente
Para mí, el ejemplo con find da el error "find: esperaba una expresión después de '-o'"
WebComer
intentaste solo find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -oofind . -path ./misc -prune -o -exec tree -P *.cpp {} \;
harish.venkat
2

La verdadera solución es generar rutas completas, filtrar rutas no deseadas y finalmente arreglar las salidas.

tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'

Si todos los archivos son necesarios en la salida, elimine el parámetro "d".

Puede encontrar una explicación detallada en: http://qaon.net/press/archives/572 si puede entender japonés.

Afante
fuente
-f flag super útil!
Michael Dimmitt