Как мы указываем несколько шаблонов игнорирования для команды `tree`?

105

Мне нужно напечатать структуру каталогов нашей производственной системы, и я хотел бы удалить некоторые конкретные каталоги из дерева ?

Как мы указываем несколько шаблонов игнорирования для treeкоманды?

SiB
источник

Ответы:

141

Вы просто предоставляете все шаблоны для -Iкоманды, разделенные |. Из справочной страницы:

-P pattern
      List  only  those files that match the wild-card pattern.  Note:
      you must use the -a option to also consider those  files  begin‐
      ning  with a dot `.' for matching.  Valid wildcard operators are
      `*' (any zero or more characters), `?' (any  single  character),
      `[...]'  (any single character listed between brackets (optional
      - (dash) for character  range  may  be  used:  ex:  [A-Z]),  and
      `[^...]'  (any  single character not listed in brackets) and `|'
      separates alternate patterns.

-I pattern
      Do not list those files that match the wild-card pattern.

Так, например

tree -I 'test*|docs|bin|lib'

пропускает 'docs', 'bin' и 'lib', каталоги и любые каталоги с именем 'test' в названии, где бы они ни находились в иерархии каталогов. Очевидно, что вы можете применять подстановочные знаки для более мощного сопоставления.

ire_and_curses
источник
4
Посмотрел справочную страницу, увидел очень лаконичное объяснение "-I", был разочарован. Не думал смотреть несколько строк выше. Благодарю. ;)
Томислав Накич-Альфиревич
Как установить фильтр, чтобы получать только файлы .html, больше ничего
Jitendra Vyas
Спасибо! Я использую это для просмотра моего кода из командной строки с исключением node_modules.
евангелист
2
Как можно docs/subdoc/исключить такой подкаталог, как ?
user1032531
@JitendraVyas: как насчет tree --prune -P '*.html'Вы также получите каталоги, но только те, .htmlв которых есть файлы.
fbicknel