Bash 基于修改日期移动文件夹的脚本
第一个帖子。 背景-我妻子是一名摄影师,她在编辑照片时拍摄了很多照片并将其保存到驱动器(mnt/STStorage),但之后从不清理。我有一个驱动器,希望根据修改的日期将文件夹移动到该驱动器。(/mnt/LTStorage)。 需要关于脚本的帮助,我可以将其添加到cron作业中,以便每天运行一次30 1*** 我想让剧本Bash 基于修改日期移动文件夹的脚本,bash,cron,pipe,mv,uuencode,Bash,Cron,Pipe,Mv,Uuencode,第一个帖子。 背景-我妻子是一名摄影师,她在编辑照片时拍摄了很多照片并将其保存到驱动器(mnt/STStorage),但之后从不清理。我有一个驱动器,希望根据修改的日期将文件夹移动到该驱动器。(/mnt/LTStorage)。 需要关于脚本的帮助,我可以将其添加到cron作业中,以便每天运行一次30 1*** 我想让剧本 检查/mnt/STStorage/root文件夹中上次修改的日期(如果较旧) 超过14天,将文件夹和其中的所有内容移动到 /mnt/LTStorage/同时保持相同的文件夹名称
#/bin/bash
dt=$(date +%Y.%m.%d)
From="/mnt/STStorage/"
To="/mnt/LTStorage/"
if [[ ! -d "$To" ]]; then
mkdir -p "$To"
fi
cd "$From"
for i in "$@"; do
find . -type d -mtime +14 -exec mv "{}" "$To" \; > "$From"/Moved."$dt".txt
uuencode "$From"/Moved."$dt".txt "$From"/Moved."$dt".txt | mail -s "Files Moved"
me@me.com
done
然后我将把它添加到crontab中,每天运行一次。您可以使用
-exec
和查找。比如:
find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \;
-类型d
将确保仅移动目录李>
另一个选项是使用xargs
find /mnt/STStorage/ -type d -mtime +14 | xargs -I '{}' mv {} /mnt/LTStorage/
更新:
要添加正在移动的内容,您可以为mv
find /mnt/STStorage/ -type d -mtime +14 -exec mv -v {} /mnt/LTStorage/ \;
因为这会在标准输出上打印所有内容。您可以将其重定向到日志文件
find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \; > /mnt/STStorage/log.file
对于电子邮件,您可以执行以下操作-
uuencode /mnt/STStorage/log.file /mnt/STStorage/log.file | mail -s "this is my subject line" chip@email.com
您可以使用-exec
和查找。比如:
find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \;
-类型d
将确保仅移动目录李>
另一个选项是使用xargs
find /mnt/STStorage/ -type d -mtime +14 | xargs -I '{}' mv {} /mnt/LTStorage/
更新:
要添加正在移动的内容,您可以为mv
find /mnt/STStorage/ -type d -mtime +14 -exec mv -v {} /mnt/LTStorage/ \;
因为这会在标准输出上打印所有内容。您可以将其重定向到日志文件
find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \; > /mnt/STStorage/log.file
对于电子邮件,您可以执行以下操作-
uuencode /mnt/STStorage/log.file /mnt/STStorage/log.file | mail -s "this is my subject line" chip@email.com
您可以将详细模式选项添加到mv
。执行此操作-find-键入d-mtime+14-execmv-v“{}”$To“\代码>如何将-v的输出写入日志并保存到/mnt/STStorage并发送电子邮件?我测试了-v,它打印出了文件,以及它在终端上的移动位置,并在答案中添加了。我并不是说这是最好的办法。但至少你有一些东西可以玩,并根据需要自定义它,如在日志文件中添加日期戳等。你可以将详细模式选项添加到mv
。执行此操作-find-键入d-mtime+14-execmv-v“{}”$To“\代码>如何将-v的输出写入日志并保存到/mnt/STStorage并发送电子邮件?我测试了-v,它打印出了文件,以及它在终端上的移动位置,并在答案中添加了。我并不是说这是最好的办法。但至少你有一些东西可以玩,并根据你的需要定制它,比如在日志文件中添加日期戳等。谢谢你,这让我走上了正确的道路。在我更新了上面的代码后还有其他问题。谢谢你,到目前为止我的代码工作正常,只需将电子邮件添加到其中即可。我可以在保存日志文件的末尾使用类似&&的命令吗?创建日志文件后,在下一行uuencode“$From”/Moved.$dt.txt”$From”/Moved.$dt.txt | mail-s“任意主题”添加此命令chip@email.com
谢谢,这让我走上了正确的道路。在我更新了上面的代码后还有其他问题。谢谢你,到目前为止我的代码工作正常,只需将电子邮件添加到其中即可。我可以在保存日志文件的末尾使用类似&&的命令吗?创建日志文件后,在下一行uuencode“$From”/Moved.$dt.txt”$From”/Moved.$dt.txt | mail-s“任意主题”添加此命令chip@email.com