Мне нужно организовать внешний жесткий диск таким образом, чтобы на нем было не более 500 папок. На панели «Свойства» в Ubuntu отображается только количество файлов, а не количество папок.
Есть ли простая командная строка, которая скажет мне количество подкаталогов?
Мне нужно посчитать рекурсивно, и диск является внешним HDD, установленным на /media/MUSIC/
. Это для автомобильной стереосистемы, чья документация гласит, что она читает только первые 500 папок.
linux
command-line
Дин Ратер
источник
источник
grep -c
более чемwc -l
. Может быть, это только я.\nd
(где\n
символ NL).ls
вывод не должен быть передан по трубопроводу . Более того, это будет намного медленнее, потому что оно должно вывести все дерево, а затем запустить через него grepНайти все папки в целом, включая подкаталоги?
... или найти все папки в корневом каталоге (не включая подкаталоги)?
источник
*foo*
для курсива: foo )find /path -not -iname '*.mp3' | wc -l
для фильтрации MP3, или чтобы использовать как MP3, так и WAVfind /path -not -iname '*.mp3' -not -iname '*.wav' | wc -l
Новые строки являются действительными символами в именах каталогов. Я предлагаю
find
напечатать пустую строку для каждого найденного каталога, а затемwc
подсчитать эти строки.источник
Попробуйте следующее [см. Ниже]:
Это распечатает список из одного каталога текущего каталога с косыми чертами для элементов, которые являются подкаталогами, а затем подсчитает строки с косыми чертами.
РЕДАКТИРОВАТЬ: вы, вероятно, должны пойти с ответом Quack Quixote, поскольку он немного более явный, но я исправил мой (после учета предложений кряк).
источник
-1
поскольку ls обнаружит канал и не будет форматировать столбцы. также вы можете получить рекурсивные списки-R
, но тогда вы, вероятно, захотите использовать grep для"/$"
совпадения только с конечными слешами (иначе счетчик будет выключен). окончательная версия:ls -Rp | grep "/$" | wc -l
.
(то есть/mount/point
) в счете, в LS версию в моем выше комментарии не будет. эти значения различаются на 1, но вы можете использовать их/mount/point/*
в команде find для исправления этого (при условии отсутствия скрытых каталогов точек).Я написал ffcnt для ускорения рекурсивного подсчета файлов при определенных обстоятельствах: ротационные диски и файловые системы, которые поддерживают отображение экстентов .
Это может быть на порядок быстрее, чем
ls
илиfind
основанные подходыисточник
Когда имеется большое количество каталогов, такие инструменты, как подобные,
tree
могут занять вечность или даже зависнуть, поэтому вы можете захотеть использовать что-то более эффективное.Наиболее эффективный способ подсчета каталогов, о которых я могу подумать, заключается в следующем, поскольку для каждой найденной папки
find
будет напечатан только один.
каталог, а не полный путь и имя файла, иwc
потребуется только итерировать по количеству символов:Чтобы исключить
/mount/point
себя из расчета и только подсчитать подкаталоги:источник
Я нашел
du --inodes
полезным, но я не уверен, какая версияdu
этого требует. На Ubuntu 17.10 работает следующее:Объединить с
| sort -nr
сортировать по убыванию по количеству содержащихся inode.источник
Мне нравится использовать дерево, чтобы получить количество каталогов с
Или неправильное использование находки, чтобы показать, что большая часть папок находится с
источник
Найти количество папок и каталог в текущем каталоге
Введите следующую команду в своем терминале
источник