You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用inotify自动将下载文件分类至指定目录?(新手教程)

Hey Wolf, 我刚好折腾过类似的自动文件归类工具,用inotifywait+shell脚本就能搞定,全程傻瓜式操作,一步一步来:

用inotifywait实现下载文件自动归类完整指南

一、先安装必要工具

首先得装inotify-tools,不同系统命令不一样:

  • Debian/Ubuntu系:sudo apt update && sudo apt install inotify-tools
  • RHEL/CentOS系:sudo dnf install inotify-tools(老版本用yum也可以)
  • macOS:先装Homebrew,然后brew install inotify-tools

二、创建归类规则和脚本

  1. 先规划好你的文件夹结构,比如:

    • 监控的下载目录默认是~/Downloads
    • 目标文件夹提前建好:
      • ~/Documents/银行对账单/工行账户
      • ~/Documents/银行对账单/建行账户
      • ~/Documents/发票/公司发票
      • ~/Documents/发票/个人发票
        先把这些文件夹都创建好,避免脚本运行时报错。
  2. 创建shell脚本,比如命名为file-sorter.sh,放在~/scripts目录(没有的话先执行mkdir ~/scripts创建):
    脚本内容如下,你可以根据自己的文件名前缀直接修改规则:

    #!/bin/bash
    
    # 定义要监控的下载目录
    WATCH_DIR="$HOME/Downloads"
    # 定义各个目标文件夹路径
    ICBC_DIR="$HOME/Documents/银行对账单/工行账户"
    CCB_DIR="$HOME/Documents/银行对账单/建行账户"
    COMPANY_INVOICE_DIR="$HOME/Documents/发票/公司发票"
    PERSONAL_INVOICE_DIR="$HOME/Documents/发票/个人发票"
    
    # 确保所有目标文件夹都存在(避免移动时出错)
    mkdir -p "$ICBC_DIR" "$CCB_DIR" "$COMPANY_INVOICE_DIR" "$PERSONAL_INVOICE_DIR"
    
    # 监控下载目录,只处理完全下载完成的文件(排除临时文件)
    inotifywait -m -e moved_to -e create --format "%f" "$WATCH_DIR" | while read FILENAME
    do
        # 只处理文件,跳过文件夹
        if [ -f "$WATCH_DIR/$FILENAME" ]; then
            # 根据文件名前缀判断归类逻辑
            case "$FILENAME" in
                "工行-"*)
                    mv "$WATCH_DIR/$FILENAME" "$ICBC_DIR/"
                    echo "已移动工行对账单: $FILENAME"
                    ;;
                "建行-"*)
                    mv "$WATCH_DIR/$FILENAME" "$CCB_DIR/"
                    echo "已移动建行对账单: $FILENAME"
                    ;;
                "公司发票-"*)
                    mv "$WATCH_DIR/$FILENAME" "$COMPANY_INVOICE_DIR/"
                    echo "已移动公司发票: $FILENAME"
                    ;;
                "个人发票-"*)
                    mv "$WATCH_DIR/$FILENAME" "$PERSONAL_INVOICE_DIR/"
                    echo "已移动个人发票: $FILENAME"
                    ;;
                # 可以添加更多规则,比如其他文件类型或前缀
                *.pdf|*.xls|*.xlsx)
                    # 这里可以设置默认归类,比如其他PDF/表格文件放到专属文件夹
                    # mv "$WATCH_DIR/$FILENAME" "$HOME/Documents/其他文件/"
                    ;;
                *)
                    # 不需要处理的文件留空即可
                    ;;
            esac
        fi
    done
    
  3. 给脚本添加执行权限:chmod +x ~/scripts/file-sorter.sh

三、测试脚本

先手动运行脚本:~/scripts/file-sorter.sh,然后下载一个带对应前缀的文件(比如命名为“工行-202406对账单.pdf”)到Downloads目录,看看是不是自动移到了对应的工行账户文件夹里。测试没问题就可以设置开机自启了。

四、设置开机自启(后台运行)

方法1:用systemd服务(Linux系统推荐)

  1. 创建systemd服务文件:sudo nano /etc/systemd/user/file-sorter.service
  2. 写入以下内容:
    [Unit]
    Description=自动归类下载文件服务
    After=graphical.target
    
    [Service]
    ExecStart=%h/scripts/file-sorter.sh
    Restart=always
    RestartSec=5
    
    [Install]
    WantedBy=default.target
    
  3. 保存退出(nano编辑器按Ctrl+O回车保存,再按Ctrl+X退出)
  4. 重新加载systemd配置:systemctl --user daemon-reload
  5. 设置开机自启:systemctl --user enable file-sorter.service
  6. 立即启动服务:systemctl --user start file-sorter.service

方法2:桌面环境启动项(适合GNOME/KDE等桌面)

  1. 打开系统设置里的“启动应用程序”(不同桌面名字可能略有差异,比如KDE叫“自动启动”)
  2. 添加新条目:
    • 名称:文件自动归类
    • 命令:/home/你的用户名/scripts/file-sorter.sh(替换成你的实际用户名路径)
    • 注释:自动将下载文件归类到对应专属文件夹
  3. 保存即可,下次开机就会自动后台运行。

五、注意事项

  • 如果你的下载目录不是默认的~/Downloads,记得修改脚本里的WATCH_DIR路径
  • 文件名前缀要和脚本里的规则完全匹配,比如你的文件是ICBC_开头,就把脚本里的"工行-"改成"ICBC_"
  • 如果遇到文件移动失败,检查目标文件夹的权限,确保你的用户有读写权限
  • macOS用户如果要设置开机自启,可以用launchd配置plist文件,核心逻辑和脚本一致

这样整个流程就完成了,跟着步骤走完全没难度,有问题随时说!

内容的提问来源于stack exchange,提问作者herrdeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:08:03