bash - 如何在bash中获取目录中最大的文件?
问题描述
我有以下问题。在变量DIR
中有未知数量的文件和文件夹。我想按以下顺序获取最大的名称和大小(以字节为单位):名称大小。例如:file.txt 124
。
我试过:
cd $DIR
du -a * | sort | head -1
但它不以字节为单位显示大小,它是大小名称格式。请问我该如何改进?
解决方案
这应该可以解决问题:
ls -larS | awk -F' {1,}' 'END{print $NF," ",$5}'
LS long list 按 Size 反向排序,然后 Awk 打印最后一个字段 $NF,第 5 个字段,使用单个空格或多个单个空格作为字段分隔符,作为最后一行的最大大小(由于反向排序上面的顺序)。
编辑:
有人提到文件名中的空格可能会导致问题,我的第一个建议是不要在文件名中使用空格,这是完全错误的,但如果你必须:
ls -larS | awk -F' {1,}' 'END{for (i=9; i<=NF; i++) printf $i" "; print " ",$5}'
将处理空间,或两个,或三个,或多少
推荐阅读
- flutter - 我如何根据字符串选择我的图标
- php - 如何使用 Firebase 将数据发送到我的 PHP 代码
- chart.js - 角度雷达图:标签或扇区的 OnClick 事件
- asp.net-core - 运行时更改 AspNetCore 主机中的日志记录
- java - java.security.egd 选项的用途是什么?
- android - Android 应用链接:构建 APK 和生成签名 APK 的区别
- json - 如何在空手道中将 Json 对象转换为 Json 数组?
- c# - ASP.NET 中的过滤器 - 如何区分文档请求和其他请求
- python - 使用 .grid() 定位时,如何将小部件放置在 tkinter 窗口的最底部?
- javascript - 在Javascript中替换字符串中的十六进制转义序列的问题