在 Linux 服务器上查看图片大小,最核心的答案是用 ls -lh 查看单张图片体积,用 du -sh 统计目录占用,用 find 按尺寸筛选文件,这三条命令覆盖了从单文件到整个目录、从精确到模糊的绝大多数场景。
linux查看图片大小用什么命令最直接
很多朋友第一次接触服务器,习惯用图形界面的文件管理器看属性,但在 Linux 服务器上,这套逻辑完全行不通,你手上通常只有一个黑乎乎的终端窗口,想了解图片多大,靠的是几行命令组合。
查看单张图片的体积,优先级最高的命令是 ls -lh,这里的 -l 参数表示以长格式列出详细信息,-h 参数则是 human-readable 的意思,把字节数换算成 KB、MB 这种方便阅读的单位,在任意目录下执行:
ls -lh photo.jpg
输出结果里会有一列类似 -rw-r--r-- 1 root root 2.3M Jan 15 10:30 photo.jpg 的信息,3M 就是这张图片的大小,如果你想知道整个目录下所有图片的体积,直接执行:
ls -lh .jpg
通配符 会匹配当前目录下所有 jpg 结尾的文件,一次性列出它们的体积。
查看图片的像素尺寸,ls 就无能为力了,它只能显示文件占用磁盘的空间,无法读取图片的宽高信息,这时候需要用到 file 命令:
file photo.jpg
输出会包含类似 JPEG image data, 1920x1080 的内容,1920x1080 就是像素宽高,这个命令对运维排查特别有用,尤其是当你怀疑图片被压缩过或尺寸异常时。
用du命令统计linux服务器图片占用空间
如果你面对的是一个存放了成千上万张图片的目录,一条条执行 ls 显然不现实,行业共识认为,这时候应该用 du 命令来快速摸清占用情况,这也是广大运维排查服务器存储空间时最常用的思路。
先看当前目录下所有文件的总大小:
du -sh /var/www/uploads
-s 表示汇总,-h 表示人性化显示,执行完会直接告诉你这个目录整体占了多少空间,38G,这一步能帮你快速判断图片是不是塞满了磁盘。
看目录下每个子目录分别占多少:
du -sh /var/www/uploads/
在路径后面加上 ,会逐个列出 uploads 下面每个子目录的大小,这样你能一眼找出哪个子目录是存储大户,du -sh /var/www/uploads/ 输出可能是:
12G /var/www/uploads/202625G /var/www/uploads/20262G /var/www/uploads/2026
统计当前目录下所有 jpg 图片的总占用:
du -ch .jpg | tail -1
-c 参数会计算总和,tail -1 用来提取最后一行总计数据,这条命令对图片文件散落在同一个目录的情况特别实用。
有不少朋友会有疑问,什么时候用 ls 什么时候用 du,两者有什么区别。ls 显示的是文件逻辑大小,适合查看单个或少量图片;du 计算的是磁盘实际占用块的大小,适合统计目录和批量文件,对于图片这种不太涉及稀疏文件的场景,两者在数值上通常差异不大,但 du 在批量处理上的效率优势非常明显。
用find命令按图片大小筛选文件
很多实际场景下,你关心的问题不是”某张图片多大”,而是”哪些图片太大了,需要清理”,这时候 find 命令是最好用的工具,它能按文件大小条件精准筛选,直接定位到需要处理的图片。
找出当前目录下所有大于 10M 的 jpg 图片:
find . -name ".jpg" -size +10M
-size +10M 表示大小超过 10 兆的文件,同理,-size -1M 表示小于 1 兆,这个命令在排查服务器有没有人上传超大原图时非常好用,你会发现很多 20M、30M 的图片躺在网站上,白白占用磁盘空间。
找出所有大于 10M 的图片并列出详细信息:
find /data/images -type f -size +10M -exec ls -lh {} \;
在 find 后面接上 -exec ls -lh {} \;,可以将匹配到的每个文件都执行一次 ls -lh,这样你能同时看到体积、修改时间和路径,对于上百个文件的情况,这样操作比逐个查看高效得多。
按图片类型筛选,png 和 webp:
find /data/images -type f \( -name ".png" -o -name ".webp" \) -size +5M
这条命令同时匹配多种图片格式,并把体积阈值设为 5M,适合对不同格式压缩率有了解的基础上做精准排查。
结合场景排查linux服务器图片存储压力
搞清楚命令本身还不够,服务器上查看图片大小通常伴随着一个明确的目的:磁盘快满了,看看是不是图片占的太多,这类运维排查场景在实际工作中占了相当大比例,处理思路比命令本身更重要。
先执行 df -h 查看磁盘整体使用率,确认是不是根分区或数据分区告急,接着用 du -sh / 逐层定位到图片存放的目录,以常见的 Nginx 静态资源目录为例:
du -sh /var/www du -sh /var/www/ du -sh /var/www//
这样逐层剥离,很快就能锁定占用最高的目录层级。在这一层找出大于 50M 的图片:
find /var/www -type f \( -name ".jpg" -o -name ".png" -o -name ".webp" \) -size +50M
执行完你会得到一组明确的文件路径,接下来可以直接针对这些文件做压缩、清理或迁移处理,据行业内的普遍观察,很多网站上线一两年后,图片存储占了总磁盘空间的 60% 以上,而其中有大量从未被访问过的原始设计稿或未压缩素材。
如果你想统计某个图片目录下各类格式图片的总量,可以配合通配符和 du:
du -ch /var/www/images/.png | tail -1
这条命令能告诉你 png 格式图片总共占了多少空间,方便你评估是否值得批量转成 webp 来节省存储成本。
图片大小与网站性能的关系
查看图片体积不仅仅是清理磁盘空间的问题,它还直接影响到网站访问速度,业内专家指出,图片是绝大多数网页中体积占比最大的资源类型,相当一部分个人站点的首页超过 70% 的传输字节数都来自图片。
在服务器上做完排查后,建议你对体积异常大的图片做二次处理,常用的方法包括:
- 使用
convert命令(ImageMagick 工具)压缩图片质量:convert input.jpg -quality 80 output.jpg - 使用
cwebp将图片转成 webp 格式:cwebp input.jpg -o output.webp - 使用
ffmpeg对 GIF 动图做帧数压缩:ffmpeg -i input.gif -vf "fps=15" output.gif
每一张图片在服务器上缩小的几 MB 空间,放到用户浏览器里就是几秒的加载时间差距,定期用本文提到的方法查看图片大小、及时清理无用素材、压缩大图,是一个合格的服务器维护习惯。
查看linux服务器图片大小的常见问题
问:为什么用 ls -lh 看到的图片大小和实际占用磁盘空间不一致?
答:ls 显示的是文件逻辑大小,而 du 计算的是实际分配的磁盘块大小,对于小文件,由于文件系统最小分配单位(通常为 4KB)的存在,磁盘占用会略大于文件实际大小,对于大体积图片,两者差异基本可以忽略。
问:服务器图片大小查询有没有图形化工具?
答:多数 Linux 服务器默认不装图形界面,如果你用的是宝塔面板或类似运维面板,可以在文件管理模块中直接看到图片大小,本质上是调用了 du 和 ls 的底层命令,SSH 终端里用命令行操作仍然是最高效、最通用的方式。
问:如何批量导出所有图片的大小清单?
答:使用 find 配合 -exec 或管道即可。find /data/images -type f -name ".jpg" -exec ls -lh {} + > image_sizes.txt,执行后所有图片的详细信息会写入当前目录的 image_sizes.txt 文件中,方便后续用表格软件分析处理。
本质上,linux服务器上的图片大小查询并没有多高深,核心就是 ls、du、find 三个命令的灵活组合。记住用 ls 看单张、用 du 看目录、用 find 按条件筛选,服务器上再多的图片也难不倒你。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/792154.html


