比较多个文本文件中的行数

时间:2018-12-02 20:00:12

标签: linux cygwin wc

我在目录中有多个文本文件,并希望将每个文件的行数相互比较。

下面是我的代码,但是输出不正确;无论行数多少,它总是向我显示“更大”。

for f in *.txt; do
for f2 in *.txt; do
if [ "wc -l $f" > "wc -l $f2" ]; then 
echo bigger;
fi;
done;done

我不确定[ "wc -l $f" > "wc -l $f2" ]是否正确。

2 个答案:

答案 0 :(得分:0)

双引号引入一个字符串,它们不运行附带的命令。 bulkRequest := client.Bulk() for j := 0; j < 20; j++ { n++ tweet := Tweet{User: "Rudi", Message: "This is the new from string representations of basic data types. " + strconv.Itoa(n)} req := elastic.NewBulkIndexRequest().Index("employee").Type("tweet").Id(strconv.Itoa(n)).Doc(tweet) bulkRequest.Add(req) } bulkResponse, err := bulkRequest.Do(context.Background()) 中的>比较字符串而不是数字,并且需要反斜杠,否则它将被解释为重定向。此外,当文件大小相同时(例如,当$ f == $ f1时),您希望得到什么输出?

[ ... ]

答案 1 :(得分:0)

这是您想要的:

#!/bin/bash

N=0
M=0
for line in $( find . -type f -name \*.sh ); do
    N=$( wc -l ${line} | cut -d" " -f1 )
    FILE=$( wc -l ${line} | cut -d" " -f2 )
    if [[ ${M} < ${N} ]]; then
        M=${N}
        BIGFILE=${FILE}
        echo "GOTCHA : ${M}"
    fi
done
echo "BIG FILE: ${BIGFILE} ( ${M} lines )"