在Linux中,查看文件大小常用ls -l(显示详细大小信息)、du -sh(查看目录/文件总大小)、stat(显示详细状态),保存结果可通过重定向实现:ls -l > file_sizes.txt覆盖保存,>>追加;或用ls -l | tee file_sizes.txt同时显示并保存,批量处理时,结合find命令(如find . -type f -exec ls -l {} \; > sizes.txt)可递归保存所有文件大小信息,可通过awk提取特定列(如ls -l | awk '{print $5, $9}' > sizes.txt)精简输出,这些方法灵活适用于文件管理、磁盘分析等场景。
在Linux系统中,管理文件和磁盘空间时,经常需要查看文件或目录的大小,并将结果保存下来以便后续分析、记录或报告,本文将详细介绍几种常用的Linux查看文件大小命令,以及如何将查询结果保存到文件中的多种方法,帮助您高效管理文件大小信息。
常用查看文件大小的命令
在保存文件大小结果前,首先需要了解常用的查看命令,这些命令的输出格式和适用场景略有不同,可根据需求选择:
ls命令:查看文件/目录基本信息(含大小)
ls是Linux中最常用的文件列表命令,结合-l(长格式)、-h(人类可读格式)和-s(显示块大小)选项,可快速查看文件大小。
示例:

# 列出当前目录下所有文件/目录,显示大小(人类可读格式,如K、M、G) ls -lh # 按大小降序排列(需结合sort命令) ls -lhS
du命令:计算目录/文件占用的磁盘空间
du(disk usage)专门用于显示文件或目录的磁盘使用情况,-s(汇总)、-h(人类可读)、-a(包括文件)选项组合使用更灵活。
示例:
# 查看当前目录总大小(人类可读格式) du -sh # 查看当前目录下各子目录的大小,并按大小降序排序 du -sh * | sort -hr
find命令:按条件查找文件并显示大小
find可根据文件名、大小、类型等条件查找文件,结合-printf选项可自定义输出格式(含大小)。
示例:
# 查找当前目录下大于100MB的文件,并显示文件名和大小 find . -type f -size +100M -printf "%p\t%kKB\n" # 查找并按大小排序(需结合xargs或sort) find . -type f -size +10M -printf "%s\t%p\n" | sort -n | head -10
stat命令:显示文件详细状态(含大小)
stat可显示文件的详细元数据,包括大小、权限、时间戳等,适合需要精确字节数的场景。
示例:
# 显示当前目录下test.txt的详细信息和大小 stat test.txt
保存文件大小结果的方法
获取文件大小信息后,可通过以下方法将结果保存到文件中,满足不同场景的需求(如临时记录、长期归档、格式化输出等)。
方法1:使用输出重定向(>或>>)
输出重定向是Linux中最基础的保存方法,将命令的输出结果写入文件,>覆盖原文件,>>追加到文件末尾。
(1)覆盖保存(>)
如果希望保存最新结果,且不保留历史数据,使用>覆盖原文件。
示例:
# 将ls -lh的结果保存到file_sizes.txt(覆盖原有内容) ls -lh > file_sizes.txt # 将du -sh */的结果保存到disk_usage.txt(覆盖) du -sh */ > disk_usage.txt
(2)追加保存(>>)
如果需要多次记录结果(如定期监控文件大小变化),使用>>追加到文件末尾,避免覆盖历史数据。
示例:
# 追加当前目录大小到disk_usage_log.txt(保留历史记录) date +"%Y-%m-%d %H:%M:%S" >> disk_usage_log.txt du -sh >> disk_usage_log.txt echo "-------------------" >> disk_usage_log.txt
注意事项:
- 若目标文件不存在,
>和>>会自动创建文件; - 若目标文件无写入权限,需使用
sudo提升权限(如sudo ls -lh > /root/file_sizes.txt); - 重定向会覆盖命令的标准输出(stdout),若命令报错(stderr)需单独处理(见方法3)。
方法2:结合tee命令:同时显示并保存结果
tee命令可同时将命令的输出显示在终端(标准输出)并写入文件,适合需要实时查看结果并保存的场景。
语法:command | tee [选项] 文件
选项:
-a:追加模式(相当于>>,否则覆盖);- 处理文件名以开头的文件(避免被误认为选项)。
(1)覆盖模式(默认)
# 查看并保存当前目录文件大小到file_sizes.txt(终端显示+文件保存) ls -lh | tee file_sizes.txt
(2)追加模式(-a)
# 追加目录大小到disk_usage_log.txt(终端显示+文件追加) date +"%Y-%m-%d %H:%M:%S" | tee -a disk_usage_log.txt du -sh | tee -a disk_usage_log.txt
(3)同时保存到多个文件
# 将结果同时保存到file1.txt和file2.txt ls -lh | tee file1.txt file2.txt
优势:
- 实时查看输出,避免“盲目保存”;
- 支持追加模式,适合长期监控;
- 可同时保存到多个文件,方便数据分发。
方法3:处理标准错误(stderr)并保存
部分命令可能同时输出标准输出(stdout)和标准错误(stderr,如权限不足、文件不存在提示),若需同时保存两者,可通过以下方式:
(1)合并stdout和stderr保存(2>&1)
# 将ls命令的stdout和stderr合并保存到ls_output.txt ls -lh /root /nonexistent 2>&1 > ls_output.txt # 或简写为(&>是2>&1>的简写) ls -lh /root /nonexistent &> ls_output.txt

