
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. ActionListeener
Dazu 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 tree
die 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 -f
Option „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