Как в Unix с помощью shell посчитать число файлов в подкаталоге?
задан 4 мар 2020 в 21:03
3
Так только в указанном подкаталоге текущего каталога:
$ find ./subdir -maxdepth 1 -type f | wc -l
ответ дан 5 мар 2020 в 0:40
0xdb0xdb
51.4k194 золотых знака56 серебряных знаков232 бронзовых знака
find / -mindepth 2 -maxdepth 2 -printf '%hn' | uniq -c
Количество файлов и папок в каждом каталоге, вывод будет выглядеть так:
...
115 /etc
5 /opt
1 /media
...
Возможно указание параметра -type
для поиска только файлов f
или директорий d
Для поиска в одном подкаталоге уже был дан ответ.
ответ дан 5 мар 2020 в 10:40
Например так:
ls -dl Music/*|grep "^[-]"|wc -l
0xdb
51.4k194 золотых знака56 серебряных знаков232 бронзовых знака
ответ дан 4 мар 2020 в 23:47
OxydOxyd
1,1537 серебряных знаков16 бронзовых знаков
0
For directories with spaces in the name … (based on various answers above) — recursively print directory name with number of files within:
find . -mindepth 1 -type d -print0 | while IFS= read -r -d '' i ; do echo -n $i": " ; ls -p "$i" | grep -v / | wc -l ; done
Example (formatted for readability):
pwd
/mnt/Vancouver/Programming/scripts/claws/corpus
ls -l
total 8
drwxr-xr-x 2 victoria victoria 4096 Mar 28 15:02 'Catabolism - Autophagy; Phagosomes; Mitophagy'
drwxr-xr-x 3 victoria victoria 4096 Mar 29 16:04 'Catabolism - Lysosomes'
ls 'Catabolism - Autophagy; Phagosomes; Mitophagy'/ | wc -l
138
## 2 dir (one with 28 files; other with 1 file):
ls 'Catabolism - Lysosomes'/ | wc -l
29
The directory structure is better visualized using tree
:
tree -L 3 -F .
.
├── Catabolism - Autophagy; Phagosomes; Mitophagy/
│ ├── 1
│ ├── 10
│ ├── [ ... SNIP! (138 files, total) ... ]
│ ├── 98
│ └── 99
└── Catabolism - Lysosomes/
├── 1
├── 10
├── [ ... SNIP! (28 files, total) ... ]
├── 8
├── 9
└── aaa/
└── bbb
3 directories, 167 files
man find | grep mindep
-mindepth levels
Do not apply any tests or actions at levels less than levels
(a non-negative integer). -mindepth 1 means process all files
except the starting-points.
ls -p | grep -v /
(used below) is from answer 2 at https://unix.stackexchange.com/questions/48492/list-only-regular-files-but-not-directories-in-current-directory
find . -mindepth 1 -type d -print0 | while IFS= read -r -d '' i ; do echo -n $i": " ; ls -p "$i" | grep -v / | wc -l ; done
./Catabolism - Autophagy; Phagosomes; Mitophagy: 138
./Catabolism - Lysosomes: 28
./Catabolism - Lysosomes/aaa: 1
Applcation: I want to find the max number of files among several hundred directories (all depth = 1) [output below again formatted for readability]:
date; pwd
Fri Mar 29 20:08:08 PDT 2019
/home/victoria/Mail/2_RESEARCH - NEWS
time find . -mindepth 1 -type d -print0 | while IFS= read -r -d '' i ; do echo -n $i": " ; ls -p "$i" | grep -v / | wc -l ; done > ../../aaa
0:00.03
[victoria@victoria 2_RESEARCH - NEWS]$ head -n5 ../../aaa
./RNA - Exosomes: 26
./Cellular Signaling - Receptors: 213
./Catabolism - Autophagy; Phagosomes; Mitophagy: 138
./Stress - Physiological, Cellular - General: 261
./Ancient DNA; Ancient Protein: 34
[victoria@victoria 2_RESEARCH - NEWS]$ sed -r 's/(^.*): ([0-9]{1,8}$)/2: 1/g' ../../aaa | sort -V | (head; echo ''; tail)
0: ./Genomics - Gene Drive
1: ./Causality; Causal Relationships
1: ./Cloning
1: ./GenMAPP 2
1: ./Pathway Interaction Database
1: ./Wasps
2: ./Cellular Signaling - Ras-MAPK Pathway
2: ./Cell Death - Ferroptosis
2: ./Diet - Apples
2: ./Environment - Waste Management
988: ./Genomics - PPM (Personalized & Precision Medicine)
1113: ./Microbes - Pathogens, Parasites
1418: ./Health - Female
1420: ./Immunity, Inflammation - General
1522: ./Science, Research - Miscellaneous
1797: ./Genomics
1910: ./Neuroscience, Neurobiology
2740: ./Genomics - Functional
3943: ./Cancer
4375: ./Health - Disease
sort -V
is a natural sort. … So, my max number of files in any of those (Claws Mail) directories is 4375 files. If I left-pad (https://stackoverflow.com/a/55409116/1904943) those filenames — they are all named numerically, starting with 1, in each directory — and pad to 5 total digits, I should be ok.
Addendum
Find the total number of files, subdirectories in a directory.
$ date; pwd
Tue 14 May 2019 04:08:31 PM PDT
/home/victoria/Mail/2_RESEARCH - NEWS
$ ls | head; echo; ls | tail
Acoustics
Ageing
Ageing - Calorie (Dietary) Restriction
Ageing - Senescence
Agriculture, Aquaculture, Fisheries
Ancient DNA; Ancient Protein
Anthropology, Archaeology
Ants
Archaeology
ARO-Relevant Literature, News
Transcriptome - CAGE
Transcriptome - FISSEQ
Transcriptome - RNA-seq
Translational Science, Medicine
Transposons
USACEHR-Relevant Literature
Vaccines
Vision, Eyes, Sight
Wasps
Women in Science, Medicine
$ find . -type f | wc -l
70214 ## files
$ find . -type d | wc -l
417 ## subdirectories
Бывают случаи, когда вам нужно точно знать, сколько файлов или папок хранится в определенной папке. Независимо от того, работаете ли вы для своей статистики или если у вас есть устройство Windows, существует множество способов, которыми вы можете найти эту информацию. Мы решили написать статью, в которой мы собираемся показать вам все методы, которые мы знаем, для подсчета элементов, найденных внутри папки.
ПРИМЕЧАНИЕ. Методы подсчета файлов и папок, которые мы покажем в этой статье, работают аналогично в Windows 10, Windows 8.1 и Windows 7. Для простоты мы будем использовать только скриншоты, сделанные в Windows 10.
Метод 1. Используйте Проводник для выбора файлов и папок, которые вы хотите подсчитать
Первый метод предполагает использование Проводника / Проводника Windows . Откройте «Проводник» и перейдите к папке, в которой хранятся элементы, которые вы хотите подсчитать.
Общее количество элементов (файлов и папок), хранящихся внутри, отображается в нижнем левом углу пользовательского интерфейса File Explorer.
Если вы хотите считать только некоторые из файлов или папок, хранящихся в вашей папке, выберите их все и посмотрите на нижнюю левую часть интерфейса File Explorer. Он отобразит количество выбранных элементов.
Способ 2. Используйте окно «Свойства» для рекурсивного подсчета всех файлов и папок
Хотя предыдущий метод во многих случаях полезен, он не работает рекурсивно. Он считает файлы и папки на первом уровне дерева папок, но эти папки, скорее всего, содержат другие файлы и папки внутри. Что, если вы хотите точно знать, сколько папок и файлов хранится внутри определенной папки и всех ее подпапок? Легкий способ найти эту информацию — использовать окно Свойства выбранной папки. Щелкните правой кнопкой мыши или коснитесь и удерживайте значок папки. В контекстном меню нажмите или коснитесь Свойства.
Обратите внимание, что еще более быстрый способ открыть окно свойств папки — выбрать его, а затем одновременно нажать клавиши Alt + Enter на клавиатуре.
Когда откроется окно «Свойства», Windows автоматически начнет подсчет файлов и папок внутри выбранной папки. Вы увидите эту информацию в поле «Содержит».
Метод 3. Используйте командную строку для рекурсивного подсчета всех файлов и папок
Вы также можете использовать командную строку. Чтобы подсчитать папки и файлы, хранящиеся в определенной папке, откройте командную строку и перейдите к этой папке. Для этого запустите команду cd [path]
, где [путь] — это местоположение вашей папки. Вы можете увидеть пример на скриншоте ниже.
Затем, чтобы подсчитать все папки и файлы внутри родительской папки, выполните следующую команду:
dir *.* /w /s
После нажатия клавиши «Ввод» в командной строке будут перечислены все файлы и папки внутри родительской папки, и в конце она покажет вам сводку ее содержимого. В этом резюме также будет показано, сколько файлов и папок хранится в вашей папке. Обратите внимание, что эта информация рекурсивна — она включает в себя все подпапки и все файлы.
Метод 4. Используйте PowerShell для подсчета всех файлов и папок
Другим тривиальным способом подсчета файлов и папок, хранящихся в родительской папке, является использование PowerShell . Откройте окно PowerShell и направляйтесь в папку родительской папки. Запустите команду cd [path]
, где [путь] — путь вашей папки. Вот пример:
Если вы хотите подсчитать все элементы внутри вашей папки, независимо от того, являются ли они файлами или папками, выполните следующую команду. Обратите внимание, что он не работает рекурсивным образом, он учитывает только элементы первого уровня.
Get-ChildItem | Measure-Object | %{$_.Count}
Если вы хотите подсчитать только папки внутри родительской папки, выполните следующую команду:
Get-ChildItem -Directory | Measure-Object | %{$_.Count}
Если вы хотите знать только количество файлов, запустите эту команду:
Get-ChildItem -File | Measure-Object | %{$_.Count}
Если вы хотите рекурсивно подсчитывать папки и/или файлы в родительской папке, добавьте параметр Recurse в предыдущие команды следующим образом:
- Рекурсивно подсчитывать все файлы и папки:
Get-ChildItem -Recurse | Measure-Object | %{$_.Count} Get-ChildItem -Recurse | Measure-Object | %{$_.Count}
- Рекурсивно подсчитывать только папки:
Get-ChildItem -Recurse -Directory | Measure-Object | %{$_.Count} Get-ChildItem -Recurse -Directory | Measure-Object | %{$_.Count}
- Рекурсивно считать только файлы:
Get-ChildItem -Recurse -File | Measure-Object | %{$_.Count} Get-ChildItem -Recurse -File | Measure-Object | %{$_.Count}
Заключение
Если вы хотите точно знать, сколько файлов и папок находится в определенной папке с вашего компьютера под управлением Windows, теперь вы знаете, как это сделать. Как вы видели, есть несколько способов, которыми вы можете найти эту информацию, чтобы вы могли выбрать, что лучше подходит.
Как обычно, чтобы проверить, нуждается ли наша файловая система в улучшении, в нашем распоряжении есть различные методы, которые варьируются от использования собственных функций Windows до использования командной строки и сторонних приложений. Важно получить информацию, которая нам нужна, чтобы начать приводить в порядок наш цифровой Диоген.
из Windows
Самый быстрый и простой способ узнать количество файлов и подпапок внутри папки — использовать проводник. Процесс так же прост, как открыть проводник, щелкнуть правая кнопка мыши на папке для которого мы хотим знать эту информацию, а затем получить доступ к ее свойства .
Количество файлов и папок внутри него отображается на Общая вкладка , чуть ниже имени папки и ее расположения. Из Windows мы никак не можем экспортировать эту информацию или структуру файлов, не прибегая к командной строке или сторонним приложениям.
Использование CMD
До появления графического интерфейса в Windows 3.11 единственным способом взаимодействия с MS-DOS, предшественницей Windows, была командная строка. В настоящее время командная строка по-прежнему необходима для выполнения определенных процессов, процессов, которые мы не можем выполнить через графический интерфейс. Тем не менее, CMD далеко не забыта, а сумела развиваться, став преемником PowerShell в Windows. В отличие от CMD, PowerShell позволяет создавать сценарии для управления различными компьютерами в сети — функция, которая никогда не была доступна в CMD.
Из командной строки мы можем узнать точное количество файлов и подпапок, находящихся внутри папки. Чтобы узнать эту информацию, первое, что мы должны сделать, это открыть CMD ( права администратора не нужны так как мы не собираемся вносить изменения в систему).
Из командной строки первое, что мы должны сделать, это получить доступ к каталогу, где находятся все файлы и папки, номер которых мы хотим узнать. Для этого нам просто нужно использовать команды «cd..» для доступа к предыдущему каталогу и «cd имя папки» для доступа к внутренней части папки. Чтобы просмотреть содержимое каждой папки, мы используем команду «dir».
Как только мы окажемся внутри папки, где мы хотим узнать точное количество файлов и папок внутри нее, мы будем использовать команду
dir /s
Количество папок показано, мы должны разделить на 3 чтобы получить правильный номер. Это связано с тем, что в командной строке подсчитываются команды «.» и «..» для работы с каталогами, которые явно не существуют в Windows.
Если, кроме того, мы хотим, чтобы файлы отображались в заказать по размеру , мы добавим команду «/os»
dir /s /os
С помощью этой команды мы также можем создать список файлов в текстовом документе, чтобы спокойно проанализировать его и посмотреть, как мы можем создать файловую структуру, которая поможет нам более эффективно управлять всеми файлами, хранящимися на компьютере. Чтобы создать текстовый файл со всеми файлами и папками, мы добавим переменную «>filename.txt».
dir /s >listado.txt
С PowerShell
PowerShell, как и CMD, также позволяет нам получить количество файлов и подкаталогов внутри него. Но, в отличие от командной строки, команда, которую мы должны использовать намного сложнее , но, в отличие от этого, показывает нам только число, число, которое соответствует количеству подкаталогов или общему количеству файлов в папке, в том числе найденных в каталогах.
Чтобы знать общее количество файлов в каталоге мы должны использовать следующую команду
Get-ChildItem c:nombrecapeta -Recurse | Measure-Object | %{$_.Count}
Да, мы хотим знать только количество папок , используемая команда будет такой
Get-ChildItem c:nombrecarpeta -Recurse -Directory | Measure-Object | %{$_.Count}
Использование сторонних приложений
Мы можем не только знать количество файлов и подпапок в каталоге изначально, но также можем использовать сторонние приложения, подобные тем, которые мы показываем вам ниже.
Проводник по размеру папки
Folder Size Explorer — это фантастическое приложение для определения количества файлов и подпапок в папке, поскольку оно позволяет нам узнать эту информацию в деталях в различных единицах измерения: байтах, килобайтах, мегабайтах, гигабайтах или терабайтах. Кроме того, в отличие от предыдущих методов, он также позволяет нам независимо знать количество включенных файлов в каждой папке, а также количество подпапок.
Пользовательский интерфейс очень похож на интерфейс файлового менеджера, поэтому мы можем быстро с ним ознакомиться. После того, как мы запустим приложение, в левом разделе мы должны выбрать, из какого каталога мы хотим получить эту информацию. В правом столбце будут отображаться имена всех каталогов, хранящихся в нем, а также количество файлов в каждой папке и общее количество подпапок.
Проводник размера папки совместим из Windows Vista в 32- и 64-разрядных версиях и из Windows Server 2008. Загрузка и использование этого приложения совершенно бесплатны для некоммерческого использования, и мы можем загрузить его прямо с веб-сайта, нажав следующую ссылке .
WizTree
Приложение WizTree анализирует наш компьютер каждый раз, когда мы его запускаем, чтобы показать количество файлов и папок, хранящихся на всех дисках, которые мы выбираем при запуске приложения. Работа приложения аналогична размеру папки, показывая нам количество файлов и подпапок, включенных в каталог, вместе с общим пространством, которое они занимают. Кроме того, это также позволяет нам быстро узнать, какие файлы занимают больше всего места на нашем жестком диске, и это поможет нам упорядочить их содержимое, поскольку оно также позволяет нам удалять, копировать и перемещать файлы и папки.
Важным моментом, который предлагает нам это приложение и которого мы не находим в других альтернативах, является то, что оно доступно в портативная версия , поэтому нет необходимости устанавливать его, чтобы воспользоваться всеми функциями, которые он нам предлагает. Кроме того, мы можем получить доступ к истории версий этого приложения, поэтому мы можем использовать его, начиная с Windows XP.
WizTree — это бесплатно приложение для некоммерческого использования, оно периодически обновляется и поможет нам организовать нашу файловую структуру так же, как мы можем сделать это непосредственно с проводником Windows, но всегда зная пространство, занимаемое файлами и подпапками. Мы можем скачать WizTree совершенно бесплатно с его веб-сайт Честного ЗНАКа .
WinDirStat
Еще одно приложение, которое у нас есть, чтобы узнать количество файлов и подпапок, включенных в папку или блок, — это приложение WinDirStat. Как мы можем понять из названия, это приложение предлагает нам статистика о каталогах Windows. Общая работа приложения очень похожа на работу Size Folder Explorer, однако WinDirStat предлагает нам дополнительную информацию в графическом виде, которая позволяет нам с первого взгляда узнать, какой тип приложений занимает место на нашем жестком диске, хотя эта информация нам пока не нужно.
При первом запуске приложения оно предложит нам выбрать диски на нашем компьютере, которые мы хотим проанализировать, если у нас их несколько. Как только мы подтвердим, какие единицы мы хотим проанализировать, приложение просканирует всю информацию, хранящуюся внутри них, чтобы предложить нам информацию, которую мы ищем. Один проанализировал компьютер, идем в предыдущий каталог, где мы хотим узнать количество файлов и папок. в Файлы в столбце отображается количество файлов, в то время как количество подпапок находится в Подкаталог колонка.
Скачивание и использование WinDirStat совершенно бесплатно. Приложение доступно через его веб-сайт через этот ссылке .
Вы когда-нибудь ломали голову над тем, как подсчитать количество файлов в каталоге и подкаталогах в Linux?
В этой краткой статье мы рассмотрим, как вы можете сделать это простым, но точным способом.
1) Использование команды wc
Команда WC, сокращенно от Word Count, – это инструмент командной строки в системах Unix / Linux, используемый для вывода новых строк, подсчета количества строк и символов в файле.
Команду также можно комбинировать с другими операциями по трубопроводам для общих функций счета.
Чтобы подсчитать количество файлов в каталоге, используйте синтаксис ниже
# ls -1 | wc -l
ls: список файлов
-1: это ОДИН. Он выводит одну запись в строке. Чтобы вывести скрытые файлы, измените его на -1a
| : Вывод труб в …
wc: Wordcount
-l: считает строки
Чтобы подсчитать количество файлов за пределами каталога, вы можете указать имя каталога, как показано ниже:
# ls directory_name | wc -l
Чтобы продемонстрировать, как работают эти команды, давайте создадим новую директорию test_folder и перейдем в нее.
# mkdir test_folder && cd test_folder
Далее мы создадим несколько текстовых файлов для демонстрационных целей.
# touch file1.txt file2.txt file3.txt file4.txt file5.txt
Давайте подтвердим существование файлов, перечислив их с помощью команды ls
# ls -l
Вывод:
Отлично, теперь давайте посчитаем файлы
# ls -1 | wc -l
Точно так же вы можете выйти из каталога с помощью команды cd
# cd ..
Точно так же вы можете выйти из каталога с помощью команды cd
# cd ..
и запустите
# ls test_folder | wc -l
2) Использование команды tree
tree – это инструмент командной строки Unix / Linux, который рекурсивно печатает каталоги в древовидном формате.
Он отображает каждый каталог вместе со всеми его подкаталогами. Кроме того, он также может отображать и распечатывать количество файлов в каталоге.
Перейдите в наш пример test_folder
cd test_folder
Затем выполните команду
tree
Вывод
Как вы можете видеть, мы перечислили имена файлов, а также счетчик внизу.
Очевидно, что благодаря наблюдению, количество соответствует точно числу файлов, созданных ранее.
3) Rsync команда
Мы можем использовать команду rsync, чтобы найти количество файлов файлов, каталогов, символических ссылок.
# rsync --stats --dry-run -ax /etc /test
–dry-run используется не для передачи файлов. / test должен быть любой пустой или несуществующей папкой.
# rsync --stats --dry-run -ax /etc /test Number of files: 1,406 (reg: 622, dir: 187, link: 597) Number of created files: 1,406 (reg: 622, dir: 187, link: 597) Number of deleted files: 0 Number of regular files transferred: 622 Total file size: 2,341,951 bytes Total transferred file size: 2,320,656 bytes Literal data: 0 bytes Matched data: 0 bytes File list size: 0 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 64,184 Total bytes received: 4,429 sent 64,184 bytes received 4,429 bytes 137,226.00 bytes/sec total size is 2,341,951 speedup is 34.13 (DRY RUN)
4) Рекурсивный подсчет файлов по каталогам и подкаталогам
Для рекурсивного подсчета файлов по каталогам и подкаталогам используйте команду ниже
# find DIR_NAME -type f | wc -l
Где:
DIR_NAME – это имя каталога
– type f указывает только файлы
wc (Word Count) подсчитывает количество строк, слов и байтов на входе
-l считает новые строки
Если вы считаете файлы в текущем каталоге, замените DIR_NAME точкой, как показано
# find . -type f | wc -l
Чтобы включить другие подпапки и файлы в подпапки, не используйте флаг – type f.
find . | wc -l
Я надеюсь, что эта статья была полезна и что теперь вы можете с удобством подсчитать количество файлов в каталогах и подкаталогах.
Кроме того, попробуйте инструмент ncdu, который является инструментом с графическим интерфейсом, который также помогает найти количество файлов.