find . -name '*.java' | xargs -L 1 cpp -fpreprocessed | grep . | wc -l
Эта команда ищет все файлы с расширением .java в текущем каталоге и его подкаталогах. Затем она передает найденные файлы на вход команде cpp -fpreprocessed, которая выполняет препроцессинг на этих файлах и удаляет комментарии. Результат этой команды передается через конвейер (|) в команду grep ., которая фильтрует все строки, содержащие хотя бы один символ, и передает их в команду wc -l, которая подсчитывает количество строк. Таким образом, эта команда выводит количество строк (в исходном коде, исключая комментарии). При желании можно использовать альтернативные инструменты, такие как awk или sed, для обработки и фильтрации строк в исходном коде. Аргумент -name представляет собой шаблон для поиска файлов, в данном случае все файлы с расширением .java.