Вы могли бы организовать, чтобы найти все файлы, удалить имена файлов, оставив вам строку, содержащую только имя каталога для каждого файла, а затем подсчитать, сколько раз появляется каждый каталог:
find . -type f |
sed 's%/[^/]*$%%' |
sort |
uniq -c
только gotcha в этом случае, если у вас есть имена файлов или имена каталогов, содержащие символ новой строки, что довольно маловероятно. Если вам действительно нужно беспокоиться о новых символах в именах файлов или именах каталогов, я предлагаю вам их найти и исправить, чтобы они не содержали символы новой строки (и спокойно убеждали виновную в ошибках их способов).
Если вы заинтересованы в подсчете файлов в каждом подкаталоге текущего каталога, считая любые файлы в любых подкаталогах вместе с файлами в непосредственной подкаталоге, то я d адаптировать команду sed
печатать только каталог верхнего уровня:
find . -type f |
sed -e 's%^\(\./[^/]*/\).*$%\1%' -e 's%^\.\/[^/]*$%./%' |
sort |
uniq -c
Первый шаблон фиксирует начало имени, точка, косая черты, имя до следующей косой черты и косых черт, и заменяет линия с только первой частью, так:
./dir1/dir2/file1
заменяется
./dir1/
Второй заменить захватывает файлы непосредственно в текущем каталоге; они не имеют косой черты в конце, и они заменяются на ./
. Сортировка и подсчет затем работают только по числу имен.
Вы ищете способ подсчета количества файлов в каждом из подкаталогов непосредственно под '. /'? – Tuxdude
Как это не по теме вопрос ?? Я хотел бы, чтобы комментарии близких избирателей были по причине! ** Если это не по теме, то где это относится? ** супер пользователь? Я так не думаю .. –
shell-script, пакетный скрипт находятся в области программирования! –