最近写了个小脚本,用来快速查找指定目录下的大文件,并且方便地预览和删除。结合了 find 和交互式模糊搜索工具 fzf,用起来很顺手,分享给大家。

脚本功能

  • 交互式输入查找目录(默认 /mnt/ssd

  • 输入文件大小阈值(支持 find -size 的格式,比如 300M1G,默认 300M

  • 使用 find 查找所有大于指定大小的文件

  • fzf 显示结果列表,支持多选

  • 预览窗口显示文件的详细信息,包括:

    • stat 文件状态

    • 文件路径

    • ls -lh 的详细信息(带颜色)

    • 文件所在目录内容,方便了解周边文件

  • 绑定快捷键 Ctrl-D 删除选中的文件,并自动刷新列表

脚本代码

bash -c ' read -rp "请输入要查找的大文件目录(默认 /mnt/ssd): " dir dir=${dir:-/mnt/ssd} read -rp "请输入文件大小阈值(find -size 参数,如 300M、1G,默认 300M): " size size=${size:-300M} find "$dir" -type f -size +"$size" | fzf --multi --preview " sh -c '\''printf \"\033[1;33m使用提示:上下键选择,Enter确认多选,Ctrl-D删除选中文件并刷新列表\033[0m\n\n\"; printf \"\033[1;34m--- 文件状态 (stat) ---\033[0m\n\"; stat \"\$1\" 2>/dev/null; printf \"\n\033[1;34m--- 文件路径 ---\033[0m\n%s\n\n\" \"\$1\"; printf \"\033[1;34m--- ls -lh 信息 ---\033[0m\n\"; ls -lh --color=always \"\$1\"; printf \"\n\033[1;34m--- 所在目录内容 (ls -l) ---\033[0m\n\"; dir=\$(dirname \"\$1\"); ls -l --color=always \"\$dir\"'\'' sh {}" --preview-window=right:60%:wrap --bind "ctrl-d:execute-silent(rm -f {+})+reload(find \"$dir\" -type f -size +$size)" '

使用心得

  • 以前查找大文件基本都是用 find 然后手动一个个确认,很麻烦。

  • fzf 的预览功能真的是太强了,能直接看到文件属性和周边目录内容,判断删除更靠谱。

  • 绑定了 Ctrl-D 快捷键,直接删文件,避免再跑一遍命令。

  • 适合清理服务器或大容量盘上的无用大文件,节省空间。

如果你也有类似需求,可以拿去改改用。