Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 行计数-如何排除目录和图像?_Linux_Bash - Fatal编程技术网

Linux 行计数-如何排除目录和图像?

Linux 行计数-如何排除目录和图像?,linux,bash,Linux,Bash,为了计算我的存储库中的行数,我键入了下面的代码,发现单词计数中还包括图像和PDF git ls-files | xargs wc -l 当有人问您存储库的规模时,您是否会包括图像/PDF? 如果没有,有人能帮我回答下面的问题吗 如何排除“/pdfs”目录下的文件 如何排除.jpg和.png 你可以利用。它统计许多编程语言中源代码的空行、注释行和物理行。可以将文件、目录和/或存档名称作为输入。例如,如果要计算存储库中的代码行数,并在计算时排除某些目录,则可以指定这些目录,这些目录用逗号分隔,如下

为了计算我的存储库中的行数,我键入了下面的代码,发现单词计数中还包括图像和PDF

git ls-files | xargs wc -l
当有人问您存储库的规模时,您是否会包括图像/PDF? 如果没有,有人能帮我回答下面的问题吗

  • 如何排除“/pdfs”目录下的文件
  • 如何排除.jpg和.png
  • 你可以利用。它统计许多编程语言中源代码的空行、注释行和物理行。可以将文件、目录和/或存档名称作为输入。例如,如果要计算存储库中的代码行数,并在计算时排除某些目录,则可以指定这些目录,这些目录用逗号分隔,如下所示:

    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控制下的文件。