2016-03-28 3 views
1

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

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

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

Дополнительная информация - Мне нужно сохранить стандартный вывод find или указать глубину каталога в начале вывода и вырезать его оттуда.

ответ

3

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

$ 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 
1

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

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

Смежные вопросы