gpt4 book ai didi

linux - 使用ksh返回目录中行数最多的文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:01 26 4
gpt4 key购买 nike

我正在编写一个 ksh 文件的脚本,我希望在其中返回目录中行数最多的文件。该脚本只能接受一个参数,并且必须是一个有效的目录。我已经弄清楚了 2 个错误案例,但是到目前为止,我在处理具有最大行数部分的文件时遇到了问题:

#!/bin/ksh
#Script name: maxlines.sh
ERROR1="error: can only use 0 or 1 arguments.\nusage: maxlines.sh [directory]"
ERROR2="error: argument must be a directory.\nusage: maxlines.sh [directory]\n"
$1
if [[ $# -gt 1 ]]
then
printf "$ERROR1"
exit 1
fi
if [ ! -d "$1" ]
then
prinf "$ERROR2"
fi
for "$1"
do
[wc -l | sort -rn | head -2 | tail -1]

根据我的发现,最大行数将来自使用 wc,但我不确定格式,因为我对 shell 脚本编写还是个新手。任何建议都会有所帮助!

最佳答案

> for "$1"
> do
> [wc -l | sort -rn | head -2 | tail -1]

for 循环有一个小的语法错误,方括号完全错位了。无论如何您都不需要循环,因为 wc 接受文件名参数列表。

wc -l "$1"/* | sort -rn | head -n 1

第一行,而不是第二行,将包含行数最多的文件。也许您想添加一个选项来删除数字并仅返回文件名。

如果你想遍历 $1 中的文件,那看起来像

for variable in list of items
do
: things with "$variable"
done

list of items 可以是通配符表达式 "$1"/*(如上},do ... done 放在您认为需要方括号的地方。

(方括号用于比较;[ 1 -gt 2 ] 运行 [ 命令来比较两个数字。它可以比较很多不同的东西——字符串、文件等。ksh 还有一个更发达的变体 [[,它比传统的 [ 具有一些特性。)

关于linux - 使用ksh返回目录中行数最多的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com