Искать файлы ТОЛЬКО в подкаталоге

Итак, скажем, я хочу искать файлы, которые являются C-файлами. Как я могу их искать ТОЛЬКО в моих подкаталогах?

Я пробовал: ls -R | egrep .c$ ls -R | egrep .c$ , но также ищет файлы .c в моем текущем каталоге. Как отфильтровать файлы в текущем каталоге и заботиться только о них в моем подкаталоге?

2 Solutions collect form web for “Искать файлы ТОЛЬКО в подкаталоге”

Строго в подкаталогах,

 ls */*.c 

Рекурсивно в подкаталогах подкаталогов,

 find */ -type f -name '*.c' -print 

Вы можете использовать файловое globbing (то есть расширение звездочки) с find как triplee, говорит, конечно, но … эта команда заставила меня вздрогнуть.

Когда вы используете команду find , у нее есть так много встроенных флагов, которые вы можете использовать, чтобы явным образом сказать, что вы хотите, чтобы не было причин использовать ls с файловым globbing. И есть много причин не делать этого. Например, файловое подкрашивание обычно игнорирует любые скрытые файлы или каталоги. Это означает, что любые файлы, имя которых начинается с точки или которые находятся в каталогах (или подкаталогах каталогов), имя которых начинается с точки, будут игнорироваться . Может быть, это то, что вы хотите, но с файловым глобусом это нелегко и прямо под вашим контролем; с find .

Найти правильный инструмент для работы. Опция, которую вы хотите, это -mindepth . Используйте его так:

find . -mindepth 2 -type f -iname '*.c'

Это находит все файлы (не-каталоги, неспециальные файлы), которые находятся внутри каталога в текущем каталоге, или любое количество уровней вниз, чье имя заканчивается на .c или .C . (Флаг -iname означает игнорировать регистр.)

(Обратите внимание, что это не будет следовать символическим ссылкам, это обычно так, как вы этого хотите, но вы можете проверить, что man find чтобы узнать, как настроить это поведение.)

В качестве побочного элемента я также использовал ls piped для grep течение довольно долгого времени, прежде чем изучить команду find , но find действительно лучший метод. Я нашел, что практические команды, приведенные на этой ссылке, очень полезны в самом начале использования find в повседневной работе: http://www.thegeekstuff.com/2009/03/15-practical-linux-find-command-examples /

Надеюсь это поможет. 🙂

  • проблемы, связанные с скриптом с $ # и циклом
  • Возврат Несколько статусов выхода в nagios
  • Разница между тремя командами, которые используются для выполнения сценария оболочки?
  • Область локальных переменных в функциях оболочки
  • Как назначить слова с пробелами как целое имя переменной в сценарии оболочки?
  • «Дополнительные символы после команды» в команде sed a
  • Скрипт, который распаковывает initrd, позволяет редактировать файл preseed.cfg, а пакеты его снова будут добавлены в cpio и gzip
  • Использование сценария ожидания для автоматизации проверки пароля для множества маршрутизаторов
  • Можно ли ссылаться на глобальную переменную, даже если локальная область существует с тем же именем?
  • Поиск писателя файла
  • Извлечение одного файла из нескольких ZIP-файлов
  • Linux и Unix - лучшая ОС в мире.