Как подсчитать количество файлов и каталогов рекурсивно в заданном каталоге

Я могу найти количество файлов рекурсивно в данном каталоге

find . -type f | wc -l

Я могу найти количество каталогов рекурсивно в данном каталоге

find . -type d | wc -l

Но что я хочу, чтобы одна команда который показывает количество файлов и каталогов рекурсивно в заданном каталоге одновременно.

Вывод будет что-то вроде

6 directories, 14 files
5
задан 21 May 2015 в 11:17

2 ответа

Используйте tree :

$ tree foo
foo
├── bar
│   ├── baz
│   └── foo3
└── foo2

2 directories, 2 files

Или можно объединиться find и awk:

find foo -type d -printf "d\n" -o -type f -printf "f\n" | awk '/f/{f++}/d/{d++}END{printf "%d directories, %d files\n", d, f}'

Или, делая вывод:

find foo -printf "%y\n" | awk '/f/{f++}/d/{d++}END{printf "%d directories, %d files\n", d, f}'

, Если Вы не возражаете против краткого вывода:

find foo -printf "%y\n" | sort | uniq -c

Это будет считать еще один каталог, чем tree - начальный каталог не считается в tree вывод.

0
ответ дан 21 May 2015 в 11:17

Можно сделать это как ниже:

d=$(find . -type d | wc -l)
f=$(find . -type f | wc -l)
echo "There are $d directories and $f files"

В моем случае, вывод There are 459 directories and 2352 files

HTH

0
ответ дан 21 May 2015 в 11:17

Другие вопросы по тегам:

Похожие вопросы: