Как найти вложенные каталоги? - PullRequest
5 голосов
/ 22 декабря 2011

У меня есть дерево каталогов, например:

dir11/dir21/dir31......./dirn1
dir12/dir22/dir32......./dirn2
dir13/dir23/dir33......./dirn3

Глубины разные.Можно ли найти все пути, по которым существует каталог с файлом x.txt, длина которого> 0?Может быть нужно использовать скрипт bash?Спасибо.

Ответы [ 4 ]

9 голосов
/ 22 декабря 2011

Я считаю, что GNU find может соответствовать всем вашим критериям:

$ find /top/dir -not -empty -type f -name x.txt -printf '%h\n'

Вышеуказанный рекурсивно ищет /top/dir непустые (-not -empty), обычные (-type f) файлы с именем x.txt и печатает каталоги, ведущие к этим файлам (-printf '%h\n').

3 голосов
/ 22 декабря 2011

Вероятно, с находкой вы можете использовать:

find /top/dir -type f -name x.txt -size +1b -printf '%h\n'
2 голосов
/ 22 декабря 2011
find . -type f -name *x.txt -size +1
1 голос
/ 22 декабря 2011

Тебе это очень нужно, да ...

for dir in $(find /the/root/dir -type d); do
    if [ ! -f "$dir/x.txt" ]; then
        continue
    fi
    size=$(stat -c %s "$dir/x.txt")
    if [ "$size" != "0" ]; then
       echo $dir
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...