首页 > 解决方案 > 如何在bash中获取目录中最大的文件?

问题描述

我有以下问题。在变量DIR中有未知数量的文件和文件夹。我想按以下顺序获取最大的名称和大小(以字节为单位):名称大小。例如:file.txt 124

我试过:

cd $DIR
du  -a * | sort | head -1

但它不以字节为单位显示大小,它是大小名称格式。请问我该如何改进?

标签: bash

解决方案


这应该可以解决问题:

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}'

将处理空间,或两个,或三个,或多少


推荐阅读