用于生成指定目录及其子目录中在过去 24 小时内被修改的文件列表,并将该列表通过电子邮件发送给指定用户。
Bash 脚本
#!/bin/bash
# 检查是否提供了必要的参数
if [ "$#" -ne 2 ]; then
echo "用法:$0 收件人邮箱 目录"
echo "示例:$0 myemail@example.com /path/to/my_directory"
exit 1
fi
# 获取参数
recipient_email=$1
directory=$2
# 创建临时文件以保存文件列表
temporary_file=$(mktemp /tmp/modified_files.XXXXXX)
# 查找过去 24 小时内被修改的文件
find "$directory" -type f -mtime -1 > "$temporary_file"
# 检查临时文件是否为空
if [ -s "$temporary_file" ]; then
# 发送文件列表作为电子邮件
mail -s "过去 24 小时内修改的文件" "$recipient_email" < "$temporary_file"
echo "已向 $recipient_email 发送电子邮件。"
else
echo "未找到过去 24 小时内被修改的文件。"
fi
# 删除临时文件
rm "$temporary_file"
使用说明
保存脚本到文件:将脚本内容保存到一个文件中,例如 send_modified_files.sh。
给文件添加执行权限:
chmod +x send_modified_files.sh
配置邮件发送功能:在运行脚本之前,确保系统能够从命令行发送电子邮件。你可能需要配置 sendmail 或 postfix,并根据你的邮件提供商调整 mail 设置。
运行脚本:提供要监控的目录和收件人的邮箱地址作为参数运行脚本。例如:
./send_modified_files.sh /path/to/my_directory myemail@example.com
该命令会监控 /path/to/my_directory 目录及其子目录中过去 24 小时内被修改的文件,并将文件列表发送到 myemail@example.com。
注意事项
- 确保 mail 命令已正确配置,以便能够发送电子邮件。不同的系统可能需要不同的配置方式,具体可参考 sendmail 或 postfix 的文档。
- 脚本中使用 -mtime -1 选项来查找在过去 24 小时内被修改的文件。find 命令会递归地搜索指定目录及其子目录中的文件。
- 如果没有找到任何被修改的文件,脚本会输出提示信息,不会发送空邮件。
- 临时文件用于存储文件列表,脚本运行结束后会自动删除该文件,以避免留下不必要的临时文件。