簡體   English   中英

遞歸計數目錄中的.gz文件的行數?

[英]Count number of lines of .gz files recursively on directory?

我有數百個目錄,每個目錄都包含.gz文件,我想計算該.gz文件的行數。

我嘗試使用以下一種襯紙來實現此目的,但gzip表示不起作用:stdin:文件意外結束

find . type -f -name '*.data.gz' | gunzip -c  | wc -l 

例如,如果有兩個目錄,每個目錄都有一個.gz文件,並且假設每個目錄都有100行,那么我希望輸出200行。

你當時在那里...:

find . -type f -name '*.gz' | xargs zcat | wc -l
gzip -dc *.gz | wc -l

-d將-c解壓縮到STDOUT(而不是磁盤)

要么

gzip -dcr * | wc -l

-d解壓縮

-c到STDOUT(不是到磁盤)

-r遞歸(看目錄)

我的目錄:

.
├── a.gz
├── b.gz
└── t
    └── f.gz

命令回顯和計數找到的每個gz文件的行:

find . -type f -name '*.gz' -exec bash -c 'echo $1;gunzip -c $1 | wc -l' dummy {} \;

輸出:

./a.gz
5
./b.gz
6
./t/f.gz
3

然后,為了獲得總計:

echo $((`find . -type f -name '*.gz' -exec bash -c 'gunzip -c $1 | wc -l' dummy {} \;  | paste -sd+`))

輸出:

14

您可以使用此代碼段。

#!/bin/bash

gzfiles=`find . -name '*.data.gz'`

total_line_count=0
if [ $? -eq 0 ]; then
        echo "Found at:"
        for file in $gzfiles
                do
                        echo " - $file"
                        fl_line_count=`gunzip $file -c | wc -l`
                        total_line_count=`expr $total_line_count + $fl_line_count`
                done
        else
                echo "No GZIP file found :("
fi

echo "Line count: $total_line_count"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM