菜鸟科技网

命令行如何快速查看文件大小?

在命令行环境中查看文件大小是Linux和Unix系统管理中常见的操作,掌握多种命令可以帮助用户根据不同需求灵活获取文件信息,以下将详细介绍几种常用的命令行查看文件大小的方法,包括基本用法、参数选项及实际应用场景。

命令行如何快速查看文件大小?-图1
(图片来源网络,侵删)

使用ls命令查看文件大小

ls是列出目录内容的命令,通过添加-l(长格式)选项可以显示文件的详细信息,包括大小,文件大小默认以字节为单位显示,可通过-h选项以人类可读格式(如KB、MB、GB)展示。

基本语法

ls -lh [文件名或目录名]

示例

ls -lh document.txt

输出可能如下:

命令行如何快速查看文件大小?-图2
(图片来源网络,侵删)
-rw-r--r-- 1 user group 1.2M Oct 20 10:30 document.txt

其中2M表示文件大小为1.2MB,若需查看多个文件,可直接指定多个文件名:

ls -lh file1.txt file2.txt dir1/

常用参数组合

  • -l:以长格式显示,包含权限、所有者、大小、修改时间等。
  • -h:以人类可读格式显示大小(如K、M、G)。
  • -a:显示所有文件,包括隐藏文件(以开头)。
  • -S:按文件大小从大到小排序。

实际应用: 当需要快速查看当前目录下所有文件的大小并排序时,可使用:

ls -lhS

此命令会按文件大小降序排列,方便找出占用空间较大的文件。

命令行如何快速查看文件大小?-图3
(图片来源网络,侵删)

使用du命令查看目录或文件大小

du(disk usage)命令用于显示文件或目录的磁盘使用情况,与ls不同,du默认显示目录及其子目录的总大小,适合分析目录空间占用。

基本语法

du [选项] [文件或目录]

常用参数

  • -h:人类可读格式。
  • -s:仅显示总计大小,不显示子目录详情。
  • -a:显示所有文件的大小,而不仅仅是目录。
  • --max-depth=N:限制递归深度,如--max-depth=1仅显示一级子目录。

示例: 查看当前目录总大小:

du -sh .

输出示例:

5G    .

查看指定目录下每个子目录的大小:

du -h --max-depth=1 /var/log

输出可能如下:

0K    /var/log/alternatives
2.1M    /var/log/apt
8.0K    /var/log/dist-upgrade
...

ls的区别ls显示文件或目录的原始大小(不包含子目录),而du显示实际占用的磁盘空间(小文件可能因磁盘块分配占用更多空间),一个1KB的文件在ls中显示为1KB,但在du中可能显示为4KB(取决于文件系统块大小)。

使用stat命令查看文件详细状态

stat命令用于显示文件的详细状态信息,包括文件大小、权限、访问时间、修改时间等。

基本语法

stat [文件名]

示例

stat document.txt

输出示例:

  File: document.txt
  Size: 1258272     Blocks: 2456    IO Block: 4096   regular file
Device: 801h/2049d  Inode: 131073    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/  group)
Access: 2023-10-20 10:30:00.000000000 +0800
Modify: 2023-10-20 10:30:00.000000000 +0800
Change: 2023-10-20 10:30:00.000000000 +0800
 Birth: -

其中Size字段即为文件大小(字节),若需人类可读格式,可结合-c选项自定义输出:

stat -c "%s %n" document.txt

输出:

1258272 document.txt

使用wc命令统计文件大小

wc(word count)命令主要用于统计文件的行数、字数和字节数,通过-c选项可仅显示字节数(即文件大小)。

基本语法

wc -c [文件名]

示例

wc -c document.txt

输出:

1258272 document.txt

若仅需数字,可结合cut命令提取:

wc -c document.txt | cut -d' ' -f1

不同文件系统的文件大小显示差异

在Linux中,文件大小可能因文件系统类型而显示不同:

  • ext4/xfslsdu显示的文件大小通常一致。
  • NTFS/FAT32:由于不支持稀疏文件,du显示的大小可能与ls不同。
  • 压缩文件系统:如btrfs,可能显示压缩前后的不同大小。

批量处理与脚本应用

在脚本中,可通过循环结合上述命令批量处理文件,查找当前目录下大于100MB的文件:

find . -type f -size +100M

或使用dusort组合:

du -h * | sort -hr | head -10

此命令会显示当前目录下最大的10个文件或目录。

相关问答FAQs

问题1:为什么lsdu显示的文件大小有时不一致?
解答:ls命令显示的是文件的实际数据大小(即文件内容占用的字节数),而du显示的是文件在磁盘上占用的实际空间,一个1KB的文件在ext4文件系统中可能占用4KB(因为文件系统以4KB块为单位分配空间)。du会计算目录下所有子文件的大小,而ls仅显示单个文件的大小,对于稀疏文件(包含大量空洞的文件),ls显示的实际大小可能远小于du显示的磁盘占用空间。

问题2:如何快速查找当前目录下最大的文件?
解答:可以使用dusort命令组合实现,以下命令会显示当前目录下最大的10个文件或目录(按人类可读格式排序):

du -h * | sort -hr | head -n 10
  • du -h *:以人类可读格式显示当前目录下所有文件和目录的大小。
  • sort -hr:按数值降序排序(-h表示人类可读数字,-r表示降序)。
  • head -n 10:仅显示前10行结果。
    若需递归查找子目录中的文件,可将替换为或,并添加--max-depth参数限制深度。
分享:
扫描分享到社交APP
上一篇
下一篇