Один из простых способов подсчитать количество файлов и подкаталогов в директории является использование команды tree. Команда выводит дерево файлов и директорий, а так же показывает информацию о количестве в конце списка. Если директория не задана, то по умолчанию подразумевается что просматривается текущая директория.
Давайте приступим, первым делом нужно убедиться, что у вас установлена данная утилита, если нет, то её следует установить. В моем примере используется операционная система CentOS, поэтому установка будет выглядеть следующим образом.
Установка tree на CentOS Linux
# yum -y install tree.i686
Установка tree на Ubuntu
# apt-get install tree
Как известно многие утилиты семейства Unix можно повстречать на различных его дистрибутивах, и FreeBSD не стал исключением.
Установка tree на FreeBSD
# cd /usr/ports/sysutils/tree && make BATCH=yes install clean
С установкой разобрались, после того как вы убедились, что у вас в системе есть утилита tree, можно приступать к её использованию.
Если запустить утилиту без опций, то она выведет список всех каталогов и файлов, начиная с текущей позиции.
Полезные опции
‑-help – краткая справка по утилите (для просмотра полной есть команда man tree);
-а – показывать все файлы, скрытые – включительно (по ум. не показываются);
-d – показать только директории;
-l – показывать содержимое директорий симлинков;
-f – показывать полный путь к файлам/директориям;
-u – показывать владельца файла/директории;
-g – показывать группу-владельца файла/директории;
-s – показывать размер файла/директории (в байтах);
-h – показывать размер файла/директории в «человеческом» виде (Кб, Мб);
-D – показывать дату последней модификации;
-L – показывать только до указанной вложенности;
-с – включает подсветку типов;
-o – вывести данные в файл (вместо stdout);
Пример использования команды tree
Один из интересных способов вывода списка это генерация html страницы. При открытии html файла в браузере результат будет представлен в виде дерева, кроме того в качестве указателей на файлы будут ссылки, кликнув по которым можно открывать файл (если есть права). Теперь представьте, есть директория со списком файлов, скажем это какие либо звуковые файлы. Необходимо сгенерировать список, чтобы можно было открывать его в браузере. Пробуем это сделать таким образом:
$ tree -a -H ~/voices/ -o ~/listen.html --dirsfirst ~/voices
После выполнения команды в домашней директории будет создан файл listen.html. При открытии его через браузер мы увидим кликабельный список.
Записывать в файл так же умеет команда ls, для примера давайте запишем список содержимого директории в текстовый файл.
$ ls -R voices > files.txt
После выполнения команды в текстовый файл files.txt будет записан список всех файлов и вложенных директорий (-R) папки voices.
Подобные методы довольно своеобразны, иногда бывает достаточно просмотра списка файлов и директории в окне консоли. На практике потребность подобного рода может повстречаться, или не повстречаться вовсе, однако знать о том, что такие возможности есть весьма полезно.