背景
在系统中使用find
命令查找大于20MB
的文件非常简单,但默认情况下,输出结果中只显示文件路径,而不显示文件大小。如下图所示:
如果输出中能够同时显示文件大小,并且对内容进行适当的着色,这将显著提高其可读性和实用性。如下图所示:
为了实现这一目标,我们可以通过把命令封装成脚本,使其不仅显示文件路径和大小,还能够对输出进行着色处理。
实现思路
编写这个脚本的思路是首先确保用户输入查找目录和文件大小限制,然后使用find
命令查找符合条件的文件,结合ls
命令显示文件大小,最后利用 --color
选项对输出进行着色处理,以提高可读性和管理效率。
脚本编写
- 默认查找目录和文件大小限制:设定默认的查找目录和文件大小限制。
SEARCH_DIR="/"
SIZE_LIMIT="+10M"
- 获取用户输入的查找目录和文件大小限制:通过
read
命令提示用户输入查找目录和文件大小限制,如果用户未输入则使用默认值。
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
- 查找大于指定大小的文件,显示文件路径和大小,并进行着色处理:使用
find
命令查找符合条件的文件,并使用ls
命令显示文件大小,同时利用--color=auto
选项对输出进行着色处理。
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
:每行只显示一个文件。
以下是命令脚本全部内容:
如何使用
-
创建脚本文件:将上述脚本保存为
find_large_files.sh
-
赋予执行权限:在终端中运行
chmod +x find_large_files.sh
-
运行脚本:执行
./find_large_files.sh
,根据提示输入查找目录和文件大小限制。 如下图所示:
总结
通过这个命令脚本,用户不仅可以轻松查找系统中大于指定大小的文件,还能显示文件的大小,并对输出结果进行着色处理,使得输出更加直观和易读。这种增强的可读性和实用性能够帮助用户更高效地管理文件系统
脚本获取方式
上述脚本已经上传上传到gitee
,有需要的小伙伴可以自行获取。gitee上的仓库主要是分享一些工作中常用的脚本。小伙伴可以frok或者watch仓库,这样有更新可以及时关注到。
仓库地址:
https://gitee.com/didiplus/script
推荐阅读
- 不再担心数据丢失:用rsync打造你的自动化备份解决方案
- IP地址乱成一团?用Shell一键搞定!
- 实用技巧,用lsof命令监控tar文件解压进度,简单有效
- 运维必备:批量实现Linux机器SSH免密登录的自动化脚本
- 运维小妙招:如何让系统信息随登录自动展现?