linux - 目录中行数最多的文件不是字节

标签 linux bash shell scripting

我正在尝试 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/

相关文章:

shell - 运行命令但留在 shell vs exit

linux - 客户端的可编写脚本的磁盘使用情况分割

c - 自动更改 RTS 以进行 RS-485 通信

linux - 如何 SED 到下一行值

linux - 我们可以使用 fgets()、fputs()、feof() 等函数执行操作吗?对于像我们用于普通文件的 fifo 文件?

python - python2.5.2中的virtualenv

linux - 需要的学习建议——Linux下SMBIOS的操作

linux - 如何避免 iconv 错误来停止我的程序

linux - TAR命令文件扩展路径扩展

ios - Xcode-命令行构建