Linux 行计数-如何排除目录和图像?
为了计算我的存储库中的行数,我键入了下面的代码,发现单词计数中还包括图像和PDFLinux 行计数-如何排除目录和图像?,linux,bash,Linux,Bash,为了计算我的存储库中的行数,我键入了下面的代码,发现单词计数中还包括图像和PDF git ls-files | xargs wc -l 当有人问您存储库的规模时,您是否会包括图像/PDF? 如果没有,有人能帮我回答下面的问题吗 如何排除“/pdfs”目录下的文件 如何排除.jpg和.png 你可以利用。它统计许多编程语言中源代码的空行、注释行和物理行。可以将文件、目录和/或存档名称作为输入。例如,如果要计算存储库中的代码行数,并在计算时排除某些目录,则可以指定这些目录,这些目录用逗号分隔,如下
git ls-files | xargs wc -l
当有人问您存储库的规模时,您是否会包括图像/PDF?
如果没有,有人能帮我回答下面的问题吗
cloc--exclude dir=imagedir,pdfdir您的存储库
将向您显示如下报告:
387个文本文件。
387个独特的文件。
22个文件被忽略。
github.com/AlDanial/cloc v 1.88 T=0.97秒(376.5个文件/秒,152866.0行/秒)
-------------------------------------------------------------------------------
语言文件空白注释代码
-------------------------------------------------------------------------------
转到235 17216 11769 95308
InstallShield 2 410 0 11178
XML 4114181592738
Python 55165231792
伯恩壳牌21 266 283 1512
JSON 19 24 0 1005
降价234520797
Ascidoc 4 119 0 312
红宝石4431238
YAML 4 4 2 113
无线电源11924112
3 16 25 68
DOS第2批13 2 38
WiX包括1 0 28
Dockerfile 1 13 9 17
-------------------------------------------------------------------------------
总数:366205301282715256
-------------------------------------------------------------------------------
您还可以将CLOC与Git一起使用,如下所示:
cloc$(git-ls文件)
这相当于
git ls文件| xargs cloc
cloc
听起来像是它完成了任务。如果使用命令sub,则应该从IFS中删除空格+制表符:IFS=$'\n'cloc$(git ls files)
如果你只想知道字数或行数,你可以这样把它们组合在一起。它也给了你语言。克隆repo、测试文本文件/文件类型、计算行数、删除文件
#!/bin/sh -e
# Get dir name from URL + remove trailing slashes - works for _most_ urls
url=${1:? No URL given}
url=${url%/}; url=${url%/}
repo=${1##*/}
repo=${repo%.git}
dir=./$repo
# Clone repo in tmp
cd "${TMPDIR:-/tmp}"
[ -e "$dir" ] && { echo Exists: "$dir" >&2; exit 1; }
trap 'rm -rf "$dir"' EXIT INT
git clone "$url"
# Get column 1 width, for alignment
max_path_length=$(printf '%s\n' "$dir/"* | wc -L)
# Extract and print the data
printf '\n%s\n\n' "$repo text files details:"
for file in "$dir"/*; do
mime=$(file --brief --mime-type "$file")
type=${mime%%/*}
if [ "$type" = text ]; then
lines=$(grep -c . "$file") || true
lang=${mime##*/}
printf "%-${max_path_length}s %s\n" "${file#$dir}" "[$lang, $lines lines]"
total_lines=$((total_lines + lines))
fi
done
printf '\n%s\n\n' "${dir#./} total lines: $total_lines"
示例输出:
$ git-wc 'git://git.savannah.gnu.org/sed.git'
Cloning into 'sed'...
remote: Counting objects: 6276, done.
remote: Compressing objects: 100% (1134/1134), done.
remote: Total 6276 (delta 4994), reused 6276 (delta 4994)
Receiving objects: 100% (6276/6276), 2.14 MiB | 495.00 KiB/s, done.
Resolving deltas: 100% (4994/4994), done.
sed text files details:
/AUTHORS [plain, 6 lines]
/BUGS [plain, 101 lines]
/COPYING [plain, 553 lines]
/ChangeLog-2014 [plain, 2586 lines]
/Makefile.am [x-makefile, 123 lines]
/NEWS [plain, 498 lines]
/README [plain, 12 lines]
/README-hacking [plain, 58 lines]
/THANKS.in [plain, 63 lines]
/basicdefs.h [x-c, 83 lines]
/bootstrap [x-shellscript, 930 lines]
/bootstrap.conf [plain, 121 lines]
/cfg.mk [plain, 343 lines]
/configure.ac [x-m4, 294 lines]
/init.cfg [plain, 163 lines]
/thanks-gen [x-perl, 12 lines]
sed total lines: 5946
如果回购是本地的,您可以调整输入方法。我相信这个想法很清楚。我知道克隆整个回购协议可能是做类似事情最愚蠢的方式,但有时你只是想知道一件事。此外,您还可以使用
bash
/sh
-例如[[“$file”==“$dir/*]]
使用git ls files--exclude per directory=
或使用--exclude=
如果路径包含换行符,这将不起作用。请参阅,非常感谢您的回答!!您是我的救世主!我决定使用cloc--vcs=git
来计算git控制下的文件。