Укажите только количество всех файлов / каталогов для дерева каталогов текущего каталога

Я хочу указать количество каталогов под каждым деревом подкаталогов текущего каталога. Поскольку существует слишком много каталогов, я не могу войти в отдельные каталоги и проверить. Я хотел бы создать отчет, похожий на тот, который показан на следующем рисунке:

введите описание изображения здесь

Проблема в том, что мой сервер предупреждает о максимальном ограничении создания каталогов. Поэтому я хотел знать, какой каталог в родительском каталоге имеет максимальные подкаталоги (исключая файлы),

5 Solutions collect form web for “Укажите только количество всех файлов / каталогов для дерева каталогов текущего каталога”

Сначала вы можете найти каталоги верхнего уровня, затем использовать вторую находку, чтобы подсчитать количество файлов и каталогов в каталоге toplevel:

$ for dir in $(find . -maxdepth 1 ! -path . -type d | sort); \ do echo -n "$dir " && find $dir ! -path . | wc -l ; done ./adir 1151 ./anotherdir 140 ./623de41e44 280 ./examples 154 ... 

Будет ли что-то вроде этого удовлетворить ваши потребности:

Путь /boot используется для демонстрации образцов. Измените его в нужную директорию.

 for DIR in $(find /boot/* -maxdepth 1 -type d) do printf "%40s: %10d\n" "${DIR}" $(find ${DIR}|wc -l) done 

Вывод:

  /boot/grub: 282 /boot/grub/fonts: 2 /boot/grub/i386-pc: 272 /boot/grub/locale: 4 /boot/lost+found: 1 

Чистое решение ksh93:

 FIGNORE='@(.|..)' for dir in */; do a=( "$dir"/**/* ); printf "%s\t%s\n" "$dir:" "${#a[*]}"; done 

Результат из /usr/src :

 linux-3.17.7-gentoo/: 561 linux-3.5.7-gentoo/: 517 linux-3.7.10-gentoo/: 505 linux-3.7.9-gentoo/: 513 linux-3.8.13-gentoo/: 551 linux-4.0.5-gentoo/: 1849 

пытаться

  find * -print | awk -F/ '{c[$1]++;} END { for (c2 in c) printf "-%s -- %d\n",c2,c[c2] ;} ' 

где

  • найти из каталога выше тех, которые вы хотите подытожить
  • awk будет считать файл верхнего уровня и файл и суммировать в конце.

Следующий небольшой цикл отобразит количество всех файлов (кроме символических ссылок) в дочерних каталогах . которые существуют в той же файловой системе, что и дочерний каталог.

 for d in ./* ./.[!.]* ./..?* do ! [ -h "$d" ] && cd "$d" 2>&3 || continue printf "%s:\t" "$d" find .//. -xdev -depth ! -type l | grep -c '^\.//\.' cd .. done 3>/dev/null 
  • Как устранить неисправность контроллера диска в системах на базе Illumos?
  • Восстановление потерянного файла в Solaris 5.10
  • Изменение цвета терминала в Solaris 10
  • egrep не работает должным образом в системе SunOS
  • Настройка аудита Solaris 11
  • Подробная информация о open socket на Solaris
  • Что означает «command1 -> command2» в результатах моего ls -al?
  • Как убить неактивных пользователей на Solaris?
  • Обновлена ​​PHP 7.1.1, отсутствует php.ini
  • замените n-й столбец csv-файла с помощью таблицы поиска
  • bash myscript.sh работает в bash, но первая строка: #! / usr / bin / sh
  • Interesting Posts

    Неудовлетворенная зависимость после обновления дистрибутива linux mint

    Консоль Linux не может отображать какой-либо язык, кроме английского, в то время как терминал под Gnome может

    linux tar перечисленные – инкрементные ненадежные

    Запуск K3b из командной строки

    Перемещение удаленного файла в командной строке FTP

    Использование 606 разрешений файлов в файле /etc/cron.d. (root) BAD FILE MODE)

    Как обновить OpenSSL на centos 7.2?

    Почему slowusb и скандал?

    как я могу стереть сервер, к которому у меня нет физического доступа?

    Понимание Linux-программного RAID, какие устройства подключены к моему RAID-массиву mdadm?

    Резервное копирование NAS

    Почему, когда я ssh на один сервер, он показывает bash, а другой имеет мое имя пользователя?

    mv перезаписывает файл только для чтения без запроса

    Как преобразовать многострочный оператор if в одну строку if, используя скрипт unix?

    Запуск ssh из тюрьмы chroot в SuSE

    Linux и Unix - лучшая ОС в мире.