Я перемешалось смесь из bash
команд в основном GNU
Определённые, убедитесь, что у вас есть, GNU grep
и GNU Awk
find . -type f -print0 | xargs -0 grep -c ';$' | \
awk -F":" '$NF>0{cmd="dirname "$1; while ((cmd | getline result) > 0) {printf "%s\t%s\n",result,$2} close(cmd) }'
Идея заключается в том grep -c
возвращает количество шаблона в формате, file-name:count
, который я передав его GNU Awk
для фильтрации тех файлов, чей счет больше нуля, и распечатайте каталог файла, содержащего его, и самого счетчика.
Как фантазии однострочника, как они называют его в эти дни,
find . -type f -print0 | xargs -0 grep -c ';$' | awk -F":" '$NF>0{cmd="dirname "$1; while ((cmd | getline result) > 0) {printf "%s\t%s\n",result,$2} close(cmd) }'
Вы можете повторно итерацию ваши требования с соответствующим примером? Не могли бы вы объяснить это подробнее? – Inian
@ Инициал, в основном я хочу иметь путь к каталогу и количество строк, заканчивающихся точкой с запятой в этом каталоге (количество строк из всех файлов в этом каталоге). Я могу вывести общее количество строк, заканчивающихся точкой с запятой в каталоге с помощью «find». -name '* .c' -print0 | xargs -0 grep '[;] $' | wc -l ', но я не знаю, как получить вывод по каталогу. – Theseven7
@ Иниан, сделал это. – Theseven7