bash - 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
解决方案
您需要对 ls 的每一行输出(而不是所有输出)执行 wc 命令,因此请使用 xargs。然后,您可以使用 sort -n 对输出进行排序并从输出中删除总数,使用 tail -6/head -5 打印前 5 个条目
ls work | xargs wc -l | sort -n | tail -6 | head -5
推荐阅读
- sorting - 这个公式是否有解决方案停止自动排序脚本
- swift - 获取区域设置日期格式信息
- .htaccess - 将 http 和 www 都重定向到 https://example.com
- c++ - 在 `R` 中使用 `c++` 类模板
- typescript - 为什么@observable 属性更改不会触发组件重新渲染?
- android - 以 API 26 为目标时,溢出菜单项变得不可见
- python - 为什么代码没有按预期工作?它旨在获取输入,然后最多进行 3 次真/假检查
- npm - 安装 ffi (1.10.0) 时出现 bootstrap 4.2.1 `bundle install` 错误
- .net-core - 如何使用 tempdata 返回错误信息
- tags - Sublime - 是否有在标签之间插入内容的快捷方式?