Sie können so etwas wie dies zutreffen:
while IFS= read -r -d '' fl;do
#your commands here
echo "total lines= $(wc -l <$fl)"
echo "lines without comments= $(wc -l < <(cpp -fpreprocessed -dD -P $fl))"
#Considering that above cpp will return all the lines without the comments.
#more commands
done< <(find linux-4.10.2 -type f -name "*.c" -print0)
PS: Wir verwenden -print0 in Fund, haben null als Dateinamen Trennzeichen und stellen Sie sicher, dass alle Dateinamen korrekt behandelt werden durch while-Schleife zu lesen, egal ob sie enthalten Sonderzeichen, Leerzeichen, etc
PS2: Wenn Sie beraten, wie die Kommentarzeilen aussehen, können wir sie auch mit anderen Tools wie sed.See entfernen dieses Beispiel:
$ a=$'code\n/*comment1\ncooment2\ncomment3*/\ncode'
$ echo "$a"
code
/*comment1
cooment2
comment3*/
code
$ wc -l <<<"$a"
5
$ sed '/\/\*/,/\*\//d' <<<"$a" #for variables you need <<<, for files just one <
code
code
$ wc -l < <(sed '/\/\*/,/\*\//d' <<<"$a")
2
https: // github.com/AlDanial/cloc – hek2mgl
grep -v kehrt eine Suche um. Das sollte helfen. –