如何用find命令按文件大小快速查找并美化输出显示

背景

在系统中使用find命令查找大于20MB的文件非常简单,但默认情况下,输出结果中只显示文件路径,而不显示文件大小。如下图所示:

如果输出中能够同时显示文件大小,并且对内容进行适当的着色,这将显著提高其可读性和实用性。如下图所示:

为了实现这一目标,我们可以通过把命令封装成脚本,使其不仅显示文件路径和大小,还能够对输出进行着色处理。

实现思路

编写这个脚本的思路是首先确保用户输入查找目录和文件大小限制,然后使用find命令查找符合条件的文件,结合ls命令显示文件大小,最后利用 --color选项对输出进行着色处理,以提高可读性和管理效率。

脚本编写

  1. 默认查找目录和文件大小限制:设定默认的查找目录和文件大小限制。
bash 复制代码
SEARCH_DIR="/"
SIZE_LIMIT="+10M"
  1. 获取用户输入的查找目录和文件大小限制 :通过 read 命令提示用户输入查找目录和文件大小限制,如果用户未输入则使用默认值。
shell 复制代码
read -p "请输入查找目录 (默认: /): " USER_SEARCH_DIR
read -p "请输入文件大小限制 (例如: +10M 默认: +10M): " USER_SIZE_LIMIT

if [ -n "$USER_SEARCH_DIR" ]; then
    SEARCH_DIR="$USER_SEARCH_DIR"
fi

if [ -n "$USER_SIZE_LIMIT" ]; then
    SIZE_LIMIT="$USER_SIZE_LIMIT"
fi
  1. 查找大于指定大小的文件,显示文件路径和大小,并进行着色处理 :使用 find 命令查找符合条件的文件,并使用ls命令显示文件大小,同时利用 --color=auto 选项对输出进行着色处理。
bash 复制代码
find "$SEARCH_DIR" -xdev -size "$SIZE_LIMIT" -type f -print0 | xargs -0  ls -Ssh1 --color=auto 

ls -Ssh1:

  • -S:按文件大小排序,最大的文件排在最前面。

  • -s:在每个文件之前显示文件的块大小。

  • -h:以人类可读的方式显示文件大小(例如,使用 K、M、G 等单位)

  • -1:每行只显示一个文件。

以下是命令脚本全部内容:

如何使用

  1. 创建脚本文件 :将上述脚本保存为 find_large_files.sh

  2. 赋予执行权限 :在终端中运行 chmod +x find_large_files.sh

  3. 运行脚本 :执行 ./find_large_files.sh,根据提示输入查找目录和文件大小限制。 如下图所示:

总结

通过这个命令脚本,用户不仅可以轻松查找系统中大于指定大小的文件,还能显示文件的大小,并对输出结果进行着色处理,使得输出更加直观和易读。这种增强的可读性和实用性能够帮助用户更高效地管理文件系统

脚本获取方式


上述脚本已经上传上传到gitee,有需要的小伙伴可以自行获取。gitee上的仓库主要是分享一些工作中常用的脚本。小伙伴可以frok或者watch仓库,这样有更新可以及时关注到。

仓库地址:

shell 复制代码
https://gitee.com/didiplus/script

推荐阅读



相关推荐
guo_wen_qiang5 小时前
mac中iTerm有没有类似xshell远程连接服务器的用户名密码方式,不用每次都要输入用户密码
运维·服务器·macos
xzl045 小时前
Ubuntu24.04 生产环境 Docker(全国内源)
运维·docker·容器
lajidecrd5 小时前
Ubuntu 24.04 LTS安装
linux·运维·ubuntu
ai小陈5 小时前
PyTorch多GPU分布式训练实战:从单卡脚本迁移到DDP
服务器·人工智能·pytorch·分布式·深度学习·ai·gpu算力
沫璃染墨5 小时前
《从零入门Linux系统篇(二十九):文件篇·二——深入文件描述符:从文件描述符表到重定向,再到Shell实现》
linux·运维·服务器·c++·驱动开发·系统架构
jing.wang_20256 小时前
制作最小Linux(Ubuntu)系统
linux·嵌入式硬件·ubuntu·dsp开发
陈年老古董6 小时前
Shell 脚本编程基础完整学习笔记
linux·sql·mysql
竣达技术6 小时前
守护变电站直流 “生命线”|竣达 BMS‑PRO‑II 智能电池综合管理单元,让蓄电池运维看得见、管得牢
运维·监控系统·机房监控
yanlaifan6 小时前
Shell编程---shell bash中的keyword
shell
byte轻骑兵6 小时前
【BlueZ 】蓝牙地址与 UUID:BlueZ 源码中核心标识的定义与使用
linux·bluez·电脑蓝牙·嵌入式蓝牙