Вот мое предложение:
#!/bin/bash
tempfile=$(mktemp)
find -type f -name "*.c" -prune >$tempfile
grep -c / $tempfile
sed 's_[^/]*$__' $tempfile | sort -u | grep -c /
Этот короткий скрипт создает временный файл, находит каждый файл в и под текущим каталогом, заканчивающимся на .c, и записывает список в файл temp. grep затем используется для подсчета файлов (следуя Как я могу получить количество файлов в каталоге с помощью командной строки?) дважды: во второй раз каталоги, которые перечислены несколько раз, удаляются с помощью sort -u после удаления файлов из каждой строки, используя sed.
Это также корректно работает с новыми строками в именах файлов: grep -c / подсчитывает только строки с косой чертой и поэтому учитывает только первую строку многострочного имени файла в списке.
$ tree
.
├── 1
│ ├── 1
│ │ ├── test2.c
│ │ └── test.c
│ └── 2
│ └── test.c
└── 2
├── 1
│ └── test.c
└── 2
$ tempfile=$(mktemp);find -type f -name "*.c" -prune >$tempfile;grep -c / $tempfile;sed 's_[^/]*$__' $tempfile | sort -u | grep -c /
4
3
Отсутствующие библиотеки предоставляются пакетом libblacs-mpi-dev. Решение заключается в установке пакета либо через диспетчер программного обеспечения GUI, либо через командную строку
sudo apt install libblacs-mpi-dev
Отсутствующие библиотеки предоставляются пакетом libblacs-mpi-dev. Решение заключается в установке пакета либо через диспетчер программного обеспечения GUI, либо через командную строку
sudo apt install libblacs-mpi-dev
Отсутствующие библиотеки предоставляются пакетом libblacs-mpi-dev. Решение заключается в установке пакета либо через диспетчер программного обеспечения GUI, либо через командную строку
sudo apt install libblacs-mpi-dev
Отсутствующие библиотеки предоставляются пакетом libblacs-mpi-dev. Решение заключается в установке пакета либо через диспетчер программного обеспечения GUI, либо через командную строку
sudo apt install libblacs-mpi-dev