У меня довольно большая файловая система, и скажем, что я хочу найти все файлы и каталоги в определенной области моей файловой системы, которые содержат строку ActionListeener
, и для этого я хочу использовать tree
. Итак, если я сделаю:
tree ~/ | grep ActionListeener
Результат будет:
│ │ │ └── ActionListeener.class
│ │ └── ActionListeener.java
Так что теперь я знаю, что эти файлы существуют где-то немного глубже в моей файловой системе, но у меня нет представление о том, какая папка содержит подпапку, в которой находится подпапка и т. д. к файлам.
Так что на самом деле мой вопрос, как я могу получить команду дерева (возможно, передавая выходные данные чему-то другому), чтобы показать мне папку и путь, который ведет меня к тем конкретным файлам, которые содержат эту строку?
Description: Ubuntu 15.04
Release: 15.04
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
Используйте tree
сопоставление с образцом (-P
) в сочетании с --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
От man 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.
Используйте -f
опция дерева. От man tree
:
Печать-f префикс полного пути для каждого файла.
, Таким образом, Ваша команда будет:
tree -f ~/ | grep 'ActionListeener'
Примечание, которому это будет соответствовать ActionListeener
где угодно в строке, так быть точным в выборе, в котором каталоге Вы выполните это.
Попробуйте tree -P '
В вашем случае: tree -P 'ActionListeener' ~ --prune