我正在尝试 wc -l 整个目录,然后在回显中显示文件名和行数。
令我更加沮丧的是,该目录必须来自传递的参数。因此,不要显得愚蠢,有人可以先告诉我为什么一个简单的 wc -l $1
没有给我在参数中键入的目录的行数吗?我知道我没有完全理解它。
最重要的是,如果给定的参数不是目录或者有多个参数,我也需要验证。
最佳答案
wc
适用于文件而不是目录,因此,如果您想要目录中所有文件的字数统计,您将从:
wc -l $1/*
通过各种旋转来去除总数,对其进行排序并仅提取最大的,您最终可能会得到类似的结果(为了便于阅读而分成多行,但应在一行中输入):
pax> wc -l $1/* 2>/dev/null
| grep -v ' total$'
| sort -n -k1
| tail -1l
2892 target_dir/big_honkin_file.txt
至于验证,您可以检查传递给脚本的参数数量,例如:
if [[ $# -ne 1 ]] ; then
echo 'Whoa! Wrong parameteer count'
exit 1
fi
你可以检查它是否是一个目录:
if [[ ! -d $1 ]] ; then
echo 'Whoa!' "[$1]" 'is not a directory'
exit 1
fi
关于linux - 目录中行数最多的文件不是字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058184/