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.

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.


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


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.


-f flag super útil!
Michael Dimmitt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.