Команда Linux: каталог внутри каталога - PullRequest
2 голосов
/ 19 апреля 2009

Итак, у меня есть каталог - скажем, / dir /. В нем у меня есть эти папки / DIR / fold1 / / DIR / fold2 / / Реж / fold3 /

каждая из этих папок (fold1,2,3) может содержать папку с именем foo. Я хочу перечислить все папки внутри dir, в которых есть папка с именем foo.

Спасибо!

Ответы [ 5 ]

2 голосов
/ 20 апреля 2009
ls -ld /dir/*/foo | grep ^d
2 голосов
/ 19 апреля 2009

А как же

ls -R /dir | grep -i foo

Разбить команду, которую мы имеем: ls -R = Список файлов рекурсивно (включая каталоги

grep -i foo = Примет указанную выше команду и отфильтрует ее без учета регистра для отображения любых экземпляров 'foo'.

2 голосов
/ 19 апреля 2009

используйте это:

find dir -type d -name foo

Итак ... dir - это каталог, который вы хотите найти.

-type это тип того, что вы ищете: d irectory, f ile или l ink.

-name - это название того, что вы ищете, с учетом регистра. Вы можете использовать -iname, если хотите, чтобы регистр не учитывался.

1 голос
/ 19 апреля 2009

Если вы хотите перечислить все каталоги, которые содержат только подкаталог с именем foo на первом уровне, вы можете сделать

for x in /dir/*; do
  [ -d $x/foo ] && ls $x
done

Конструкция [ ... ] является аббревиатурой для встроенной оболочки test. -d $x/foo проверяет, существует ли $x/foo и является ли он каталогом. Если это так, то выполняется ls $x.

1 голос
/ 19 апреля 2009

Я предлагаю:

find /dir -name foo -type d -exec dirname {} \; | xargs ls

но это не работает, если в каком-либо каталоге есть пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...