Команда ctags не решает, что "это не обычный файл",

Когда я запускаю ctags -R *, я получаю ошибки, говорящие, что все каталоги не являются обычными файлами, и он пропускает их вместо рекурсивного генерации тегов для них.

ctags: skipping arpa: it is not a regular file.
ctags: skipping asm: it is not a regular file.
ctags: skipping asm-generic: it is not a regular file.
ctags: skipping bits: it is not a regular file.
ctags: skipping blkid: it is not a regular file.
ctags: skipping boost: it is not a regular file.

В чем проблема?

Ответ 1

Как и this и this, проблема в том, что вы не используете Exuberant Ctags, re running GNU Emacs etags, который также предоставляет исполняемый файл ctags. Запустите ctags --version, и вы увидите что-то вроде этого:

ctags (GNU Emacs 23.1)
Copyright (C) 2009 Free Software Foundation, Inc.
This program is distributed under the terms in ETAGS.README

И если вы посмотрите на странице руководства, вы увидите, что -R фактически эквивалентно --no-regex. Фактически, страница руководства даже не упоминает рекурсию как вариант.

   -R, --no-regex
          Don't  do  any more regexp matching on the following files.  May
          be freely intermixed with filenames and the --regex option.

Возможно, вы могли бы генерировать теги рекурсивно с помощью shell magic, но вы можете столкнуться с проблемами в будущем, если ожидаете Exuberant Ctags. Таким образом, лучшим решением, вероятно, является установка требуемых ctags:

sudo apt-get install exuberant-ctags

Exuberant Ctags также можно установить из источника:

http://ctags.sourceforge.net/

Ответ 2

Это происходит, если у вас установлены инструменты elvis. удалите их чем-то вроде

sudo apt-get remove elvis-tools 

а затем установите exuberant-ctags с помощью

sudo apt-get install exuberant-ctags