Comment utiliser la magie du shell pour créer un etags récursif en utilisant GNU etags?

Les etags standard GNU ne supportent pas une marche récursive de répertoires comme le font les ctags -R exubérants. Si je n’ai access qu’aux etags GNU, comment puis-je utiliser bash shell magic pour que etags produise une table TAGS pour tous les fichiers C ++ *.cpp et *.h répertoire en cours et tous les répertoires situés en dessous du fichier en cours de manière récursive créer une table TAGS dans le répertoire en cours avec le nom de chemin approprié pour emacs afin de résoudre les entrées de la table TAGS.

Le wiki Emacs est souvent une bonne source de réponses aux problèmes courants ou aux meilleures pratiques. Pour votre problème spécifique, il existe une solution pour Windows et Unixen:

http://www.emacswiki.org/emacs/RecursiveTags#toc2

En gros, vous exécutez une commande pour rechercher tous les fichiers .cpp et tous les fichiers .h (modifiez les sélecteurs de fichiers si vous utilisez des terminaisons de fichiers différentes, telles que .C ) et dirigez le résultat dans etags. Comme Windows ne semble pas avoir xargs, vous avez besoin d’une version plus récente d’etags pouvant lire stdin (notez le tiret à la fin de la ligne qui symbolise stdin). Bien sûr, si vous utilisez une version récente d’etags, vous pouvez également utiliser le paramètre dash au lieu de xargs.

Windows :

 cd c:\source-root dir /b /s *.cpp *.h *.hpp | etags --your_options - 

Unix :

 cd /path/to/source-root find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append 

Cette commande crée un fichier etags avec le nom par défaut “TAGS” pour les fichiers .c, .cpp, .Cpp, .hpp, .Hpp .h récursivement.

 find . -regex ".*\.[cChH]\(pp\)?" -print | etags - 

Utilisez find. homme trouve si tu as besoin.