[英]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.