Рейтинг:0

поиск каталогов и файлов

флаг kw

Я понимаю, что могу найти каталоги с определенным шаблоном, используя:

найти . -тип d -имя "tmp_*"

Я понимаю, что могу найти файлы с каталогом, используя:

найти . -type f -name "tmp.conf"

Как мне составить список всех каталогов, начинающихся с tmp_, содержащих файл с именем tmp.conf, и указать путь к этому файлу?

Спасибо!

Рейтинг:0
флаг cn

Есть разные пути в Рим. Я бы, наверное, специально искал файлы с именем tmp.conf файлов и иметь полный путь для каждого экземпляра, как в

найти . -type f -name 'tmp.conf' -exec readlink -f {} \;
Рейтинг:0
флаг hr

Вы могли бы использовать

найти . -путь '*/tmp_*/tmp.conf'

или же

найти . -regex '.*/tmp_[^/]*/tmp\.conf'

Разница в том, что первый (который использует обычные подстановочные знаки оболочки) будет соответствовать таким вещам, как ./каталог/tmp_foo/подкаталог/tmp.conf так как / специально не обрабатывается *. Второй (который использует регулярное выражение) исключает промежуточные / символы явно.

Если вам нужен только путь к содержащему каталогу (без tmp.conf базовое имя, вы можете использовать найти команда -printf с %час спецификатор:

найти . -path '*/tmp_*/tmp.conf' -printf '%h\n'

В качестве альтернативы вы можете сделать что-то вроде

найти . -type d -name 'tmp_*' -execdir test -e {}/tmp.conf \; -Распечатать

или же

найти . -type d -name 'tmp_*' -exec sh -c '
  for f do [ -e "$f/tmp.conf" ] && echo "$f"; сделано
' найти-ш {} +
Jason H avatar
флаг kw
Думаю, мне удалось это выяснить. Я сделал следующее: find ./tmp_* -type f -name "tmp.conf" | сортировать -f
флаг hr
@JasonH, если вас интересует только набор каталогов верхнего уровня, вам вообще не нужен `find` - вы можете просто использовать `echo tmp_*/tmp.conf` или `printf '%s\n ' tmp_*/tmp.conf` (вы, вероятно, захотите сначала установить `shopt -s nullglob`).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.