Получить глубину файла в дереве каталогов

Я использую команду find для рекурсивного просмотра дерева каталогов, подсчета файлов, размеров и т. д.

Теперь мне нужно получить глубину каталога каждого файла. Есть ли переносимый способ для FreeBSD и CentOS?

Я знаю, что find может печатать фактическую глубину каталога, но, к сожалению, это работает только на CentOS, а не на FreeBSD.

Кроме того, мне нужно сохранить стандартный вывод find ИЛИ поместить глубину каталога в начало вывода и вырезать его оттуда.


person Mára Toner    schedule 28.03.2016    source источник


Ответы (2)


Вы можете подсчитать / в пути:

$ find . -type f -exec bash -c 'echo '{}' | grep -o / | wc -l' \;

Или с именами файлов:

$ mkdir -p one/two/three four/five && touch file one/two/file one/two/three/file
$ find . -type f -exec bash -c 'echo -n '{}' :; echo '{}' | grep -o / | wc -l' \;
./file :1
./one/two/file :3
./one/two/three/file :4
person SLePort    schedule 28.03.2016

Попробуй это:

find . -type d -exec bash -c 'echo $(tr -cd / <<< "$1"|wc -c):$1' -- {} \; | sort -n | tail -n 1 | awk -F: '{print $1, $2}'

person JonatasTeixeira    schedule 28.03.2016