Wie geben wir mehrere Ignoriermuster für den Befehl `tree` an?

105

Ich muss die Verzeichnisstruktur unseres Produktionssystems drucken und möchte bestimmte Verzeichnisse aus dem Baum entfernen .

Wie geben wir mehrere Ignoriermuster für den treeBefehl an?

SiB
quelle

Antworten:

141

Sie geben einfach alle Muster für den -IBefehl an, getrennt durch |. Aus der Manpage:

-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.

Also zum Beispiel

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

Überspringt die Verzeichnisse 'docs', 'bin' und 'lib' sowie alle Verzeichnisse mit dem Namen 'test', unabhängig davon, wo sie sich in der Verzeichnishierarchie befinden. Natürlich können Sie Platzhalter verwenden, um das Matching zu optimieren.

ire_and_curses
quelle
4
Schaute auf die Manpage, sah eine sehr knappe Erklärung für "-I", war frustriert. Ich hätte nicht gedacht, ein paar Zeilen höher zu schauen. Vielen Dank. ;)
Tomislav Nakic-Alfirevic
So stellen Sie den Filter so ein, dass nur HTML-Dateien abgerufen werden, sonst nichts
Jitendra Vyas
Vielen Dank! Ich benutze dies, um meinen Code von der Kommandozeile aus mit Ausnahme von node_modules zu durchsuchen.
Thevangelist
2
Wie kann ein Unterverzeichnis wie docs/subdoc/ausgeschlossen werden?
user1032531
@JitendraVyas: Wie wäre es tree --prune -P '*.html', wenn du auch Verzeichnisse bekommst, aber nur die mit .htmlDateien darin.
Fbicknel