列出 Linux 中最小的文件

3

如何在Shell中打印/usr/bin目录中的前6个最小文件?

ls /usr/bin

我知道这会显示该目录中的所有文件,但我不知道如何打印出最小的6个文件。
在Shell命令行上,以下是一个一行代码的过程:

2个回答

6

试试这个:

ls -SrqL /usr/bin | head -6

-S 参数按文件大小排序

-r 参数按相反顺序排序

-q 参数打印“?”来替代不可视字符(包括换行符)

-L 参数显示符号链接所引用的文件信息而不是本身的信息

head 命令显示前面6行的输出结果


2
为什么不解析 ls 命令? - Cyrus
1
@Cyrus 你比自己的影子还快。@user10752715 只是提到了打印。所以 ls -Sr 甚至 head -6 都是相当无害的。 - Léa Gris
2
@MadPhysicist:不能保证输出包含六个文件名,因为文件名中允许有换行符。 - Cyrus
2
@Carlos,你的命令包括符号链接。我运行了这个命令,它列出了所有最小的前6个链接,但实际文件链接指向的是更大的文件。我认为我们应该排除链接。 - Pacifist
1
@Carlos:没问题。Bug:在我的例子中,你需要从 sort 中去掉 -r 以矫正错误的排序。 - Cyrus
显示剩余8条评论

2
列出当前目录中最小的六个文件:
find . -maxdepth 1 -type f -printf "%s %f\0" | sort -z -n | head -z -n 6 | cut -z -d ' ' -f 2- | tr '\0' '\n'
  • 这仅列出文件
  • 它可以处理文件名中的所有特殊字符,甚至包括换行符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接