Как посчитать количество файлов в папке Linux и FreeBSD?
Переносил бекапы используя rsync — в одинаковом содержимом я не сомневался (так как не первый раз), а вот количество файлов на той и этой стороне решил проверить.
Посчитать количество файлов в каталоге можно командой:
ls -l -R /data_b | grep ^- | wc -l |
Команда составная, немного поясню ее механизм работы.
Сначала выводим список всех файлов в каталоге /data_b и его подкаталогах
ls -l -R /data_b
дальше отделяем строки которые начинаются с «-»
grep ^-
и затем подсчитываем количество строк (файлов)
wc -l
P.S. пишу как подсчитать в FreeBSD, так как этим пользовался в этой системе, но работать команды будут и в Linux, так как команды стандартные
%ls -l
total 626
и не надо усложнять , и рекурсивно к тому же
%uname -rp
6.0-RELEASE i386
%
а если по разным шаблонам в имени файла? то это как ?. думаю надо курить в сторону awk. может кто подскажет примерчик по теме
Предыдущему анониму
ls -l
выводит просто список файлов
$ uname -rp
8.0-RELEASE-p2 amd64
Можно и по шаблонам, например,
выведет количество файлов с расширением so
В команде grep можно использовать регулярные выражения — получается очень гибко
Спасибо за пример, и что не менее важное, за объяснение. Не часто находишь краткое и понятное объяснение. Чаще что-то вроде man grep и все.