我有以下最简源文件:
$ cat path/xx/yy/fooBar.c
void this_is_a_test(void)
{
}
如果我这样运行etags,它可以正常工作:
$ etags path/xx/yy/fooBar.c
$ cat TAGS
path/xx/yy/fooBar.c,25
void this_is_a_test(1,0
但是如果我通过find/xargs运行etags,TAGS文件就会损坏:
$ find . -name fooBar.c
./path/xx/yy/fooBar.c
$ find . -name fooBar.c | xargs etags
$ cat TAGS
path/xx/yy/fBoBar.c,25
void this_is_a_test(^?1,0
请注意,文件名显示为fBoBar.c -- 无效! 我希望能够通过执行类似于“find . -name'*.[ch]'| xargs etags”的操作来生成TAGS。但是当我这样做时,大多数文件名都被破坏了。 有什么想法可以解决这个问题,或者我可以做些什么让它工作? Ubuntu Lucid。 Etags来自emacs23-bin-common 23.1+1-4ubuntu7。编辑:响应fschmitt的问题:
$ etags $(find . -name fooBar.c)
$ cat TAGS
path/xx/yy/fBoBar.c,25
void this_is_a_test(1,0
新信息:
我刚刚注意到,我在上面的原始问题中两种用法的区别是路径前面有一个.
。如果我像这样调用etags:etags ./path/xx/yy/fooBar.c
,它会损坏文件。因此,解决方法是确保传递给etags的参数没有前导标签。(也许这是etags的一个bug,因为文档几乎完全描述了我的使用模式。)
Etags来自于emacs23-bin-common 23.1+1-4ubuntu7
. - bstpierresed "s/^\.\///" | xargs etags -
- Jack Morrison