代码之家  ›  专栏  ›  技术社区  ›  bstpierre Edgar Aviles

为什么etags生成损坏的标签文件?

  •  6
  • bstpierre Edgar Aviles  · 技术社区  · 14 年前

    我有以下最小的源文件:

    $ 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,则标记文件已损坏:

    $ 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 . 但是当我这样做的时候,它会破坏大多数文件名。

    知道它为什么会这样失败吗,和/或我能做些什么使它工作吗?

    Ubuntu清晰。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 ,它会损坏文件。因此,解决方法是确保args到etags没有前导标记。(也许这是ETags中的一个bug,因为文档几乎完全描述了我的使用模式。)

    5 回复  |  直到 13 年前
        1
  •  6
  •   mshamma    13 年前

    find . -name '*.[hc]' -print  | cut -c3- | xargs etags -
    

        2
  •  1
  •   bstpierre Edgar Aviles    14 年前

        3
  •  0
  •   scottfrazer    14 年前

    -

    find . -name fooBar.c | xargs etags -
    

        4
  •  0
  •   fschmitt    14 年前

    etags `find . -name '*.c'` `find . -name '*.h'`
    

        5
  •  0
  •   Mahesh    13 年前

    etags --members `find ./ | grep [ch]$`