Я хотел бы, чтобы команда BASH перечисляла только количество файлов в каждом подкаталоге каталога.
Например , в каталоге /tmp
там dir1
, dir2
... Я хотел бы видеть:
`dir1` : x files
`dir2` : x files ...
Предполагая, что вам нужно только рекурсивное количество файлов, а не каталогов и других типов, что-то вроде этого должно работать:
find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
printf "%-25.25s : " "$dir"
find "$dir" -type f | wc -l
done
find
...-print0 | xargs -0
....bash
alias
!!sort -rn -k 2,2 -t$':'
вы получите список DESCЭта задача настолько очаровала меня, что я сам хотел найти решение. Это даже не займет цикл, и МОЖЕТ быть быстрее в скорости выполнения. Излишне говорить, что усилия Тора очень помогли мне понять вещи в деталях.
Так вот мой
По какой-то причине это выглядит скромно, потому что это намного мощнее, чем кажется. :-)
Однако, если вы намереваетесь включить это в свой
.bash_aliases
файл, он должен выглядеть так:Обратите внимание на очень сложную обработку вложенных одинарных кавычек. И нет, нельзя использовать двойные кавычки для
sh -c
аргумента.источник
strace -fc script
. Ваша версия делает примерно на 70% больше системных вызовов. +1 для более короткого кода :-)find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f | wc -l)" {}' \; | sort -nr
Перечисляет папки и файлы в текущей папке с количеством файлов, найденных ниже. Быстрое и полезное ИМО. (файлы отображаются с количеством 1).
источник
| sort -rn
чтобы отсортировать подкаталоги по количеству файлов.Использование find - определенно хороший способ, если вы хотите считать рекурсивно, но если вы просто хотите подсчитать файлы непосредственно в определенном каталоге:
ls dir1 | wc -l
источник
ls -d */ | xargs -n1 ls | wc -l
(Используйте ответ, который вы приняли, если он уже работает, хотя! Это просто, и теперь вы знаете.)find
так важно. ( не говоря уже-print0
иxargs -0
уже указал Скотт в другой ответ)Мне часто нужно подсчитать количество файлов в моих подкаталогах и использовать эту команду. Я предпочитаю, чтобы счет появился первым.
источник
Что я использую ... Это создает массив всех подкаталогов в том, который вы задаете в качестве параметра. Распечатайте подкаталог и количество его в том же подкаталоге, пока все подкаталоги не будут обработаны.
источник
Вы можете использовать этот код Python. Загрузите интерпретатор, запустив
python3
и вставив это:Или рекурсивная версия для вложенных подсчетов:
Пример вывода:
источник