grep
может сделать за вас подсчет с помощью своего флага -c
, поэтому wc -l
не нужен. Кроме того, grep
принимает в качестве входных данных несколько файлов, если вы их предоставили.
Например,
grep -c '^>' some/dir/*.fa
Чтобы сделать это рекурсивно, используйте grep -Rc '^>' dirname
, если у вас есть grep
, который знает параметр -R
, (это запустит все файлы ), в противном случае используйтеfind
:
find dirname -type f \( -name '*.fa' -o -name '*.fasta' \) -exec grep -c '^>' /dev/null {} +
Дополнительный /dev/null
в приведенной выше команде гарантирует, что grep
получит по крайней мере два входных файла, что, в свою очередь, гарантирует, что он всегда будет отображать имя файла, который он обрабатывает (он не делает этого с один входной файл ). Можно также использовать -H
с grep
, хотя это нестандартная опция -.
Или,с вашей исходной командой, подключенной к циклу, который получает пути изfind
:
find dirname -type f \( -name '*.fa' -o -name '*.fasta' \) -exec sh -c '
for pathname do
printf "Counting in %s...\n" "$pathname"
grep "^>" "$pathname" | wc -l
done' sh {} +
Поскольку ваша команда сама по себе не сообщает имя файла, я добавил оператор printf
, в котором оно упоминается.
Связанные:
Наконец-то я сделал резервную копию всех ценных файлов и каталогов и удалил свою учетную запись.
Я воссоздал его и перезагрузил файлы, убедившись, что нет .config/ , .kde/ , .cache/ , .kdevelop/ или другой скрытый каталог был восстановлен.
Конечно, я потерял свои пользовательские конфигурации, но теперь Plasma KDE и KDevelop работают должным образом.
Для протокола: после повторной инициализации CMake внутри KDevelop настаивал на использовании ninja
вместо make
. Довольно сложно изменить, и для этого необходимо выйти и перезагрузить KDevelop.