首页 > 解决方案 > bash脚本如何将5个最大行的文件命名为wc-l

问题描述

我需要编写一个脚本,我需要整理出 5 个行数最多的文件名。这是我不知道该怎么做的部分。也许有人可以帮助我?

ls work | wc -l 

我的脚本,但不知何故它仍然不打印那些行数最多的 5 个文件的名称

mkdir work 
cp /etc/*.conf . 
 ls work | perl -e 'print sort { length($b) <=> length($a) } <>' | head -5
tar cf work.tar.gz work

标签: bashshellwc

解决方案


您需要对 ls 的每一行输出(而不是所有输出)执行 wc 命令,因此请使用 xargs。然后,您可以使用 sort -n 对输出进行排序并从输出中删除总数,使用 tail -6/head -5 打印前 5 个条目

ls work | xargs wc -l | sort -n | tail -6 | head -5

推荐阅读