Чтобы найти все пути к каталогам от текущего каталога вниз, которые содержат определенную строкуtpcc
:
find. -type d -path '*tpcc*'
Предикат -path
будет сопоставлять шаблон с именами путей, с которыми встречается find
, и, если он соответствует шаблону, будет напечатан текущий путь.
Если вы не хотите чтобы шаблон совпадал в конце текущего имени пути, вместо этого используйте *tpcc*/*
в качестве шаблона. Сопоставление /
где-то после tpcc
приведет к тому, что find
найдет каталоги строго ниже любого каталога, имя которого содержит tpcc
.
-type d
ограничивает поиск только каталогами.
Хотели бы вы обернуть это в простую в использовании функцию оболочки:
pathfind () {
case $# in
1) # only a string was given
searchpath=.
searchstring=$1
;;
2) # search path and string was given
searchpath=$1
searchstring=$2
;;
*) # anything else is an error
echo 'Expected one or two arguments' >&2
return 1
esac
find "$searchpath" -type d -path "*$searchstring*"
}
Вы можете использовать это как
pathfind tpcc
или как
pathfind /some/path tpcc
или
pathfind /some/path 'tpcc*/'