Wie verwende ich Tree, um den Pfad zu Dateinamen anzuzeigen, die eine bestimmte Zeichenfolge enthalten?

Wie verwende ich Tree, um den Pfad zu Dateinamen anzuzeigen, die eine bestimmte Zeichenfolge enthalten?

Ich habe ein ziemlich großes Dateisystem und sagen wir, ich möchte alle Dateien und Verzeichnisse in einem bestimmten Bereich meines Dateisystems finden, die den String enthalten. ActionListeenerDazu möchte ich verwenden tree. Wenn ich das also mache:

tree ~/ | grep ActionListeener

Das Ergebnis wird sein:

│   │   │           └── ActionListeener.class
│   │           └── ActionListeener.java

Ich weiß jetzt also, dass diese Dateien irgendwo etwas tiefer in meinem Dateisystem vorhanden sind, aber ich habe keine Ahnung, welcher Ordner den Unterordner enthält, welcher den Unterunterordner enthält und so weiter bis hin zu den Dateien.

Meine Frage lautet also wirklich: Wie kann ich den Tree-Befehl dazu bringen (vielleicht indem ich die Ausgabe an etwas anderes weiterleite), mir den Ordner und den Pfad anzuzeigen, die mich zu den bestimmten Dateien führen, die diesen String enthalten?


Betriebssysteminformationen:

Description:    Ubuntu 15.04
Release:    15.04

Verpackungsinformationen:

tree:
  Installed: 1.7.0-3
  Candidate: 1.7.0-3
  Version table:
 *** 1.7.0-3 0
        500 http://gb.archive.ubuntu.com/ubuntu/ vivid/universe amd64 Packages
        100 /var/lib/dpkg/status

Antwort1

Verwenden Sie treedie Musterübereinstimmung ( -P) von in Kombination mit --prune:

$ tree
.
├── archlinux-simplyblack
│   ├── angle-down.png
│   ├── archlinux.png
# snip
    ├── reboot.png
    ├── shutdown.png
    └── theme.conf

8 directories, 78 files
$ tree -P 'reboot*' --prune            
.
├── maui
│   └── reboot.png
└── maui-dark
    └── reboot.png

2 directories, 2 files

Ausman tree:

-P pattern
      List  only  those files that match the wild-card pattern.  Note:
      you must  use  the  -a  option  to  also  consider  those  files
      beginning   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.

--prune
      Makes  tree prune empty directories from the output, useful when
      used in conjunction with -P or -I.  See BUGS AND NOTES below for
      more information on this option.

Antwort2

Nutzen Sie die -fOption „Baum“. Von man tree:

-f Druckt das vollständige Pfadpräfix für jede Datei.

Ihr Befehl lautet also:

tree -f ~/ | grep 'ActionListeener'

Beachten Sie, dass dies an jeder beliebigen Stelle in einer Zeile übereinstimmt ActionListeener. Wählen Sie daher genau aus, in welchem ​​Verzeichnis Sie dies ausführen.

Antwort3

Versuchentree -P '<your_regex_or_file_name>' <tree_root_directory> --prune

In Ihrem Fall: tree -P 'ActionListeener' ~ --prune

verwandte Informationen