Я могу найти количество файлов рекурсивно в данном каталоге
find . -type f | wc -l
Я могу найти количество каталогов рекурсивно в данном каталоге
find . -type d | wc -l
Но что я хочу, чтобы одна команда который показывает количество файлов и каталогов рекурсивно в заданном каталоге одновременно.
Вывод будет что-то вроде
6 directories, 14 files
Используйте 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
вывод.
Можно сделать это как ниже:
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