第一篇文章。 背景 - 我的妻子是一名摄影师,她在拍摄时拍了很多照片并将它们保存到驱动器(mnt / STStorage),但之后从未清理过。我有一个驱动器,我想根据修改日期移动文件夹。(/ mnt / LTStorage)。 需要帮助我可以添加到cron作业的脚本每天运行一次30 1 * * * 我希望脚本能够......
OS CentOS 6.4
这就是我所拥有的,认为这可能现在有效。可以更清洁。
#/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以每天运行一次。
答案 0 :(得分:1)
您可以将-exec
与find
一起使用。类似的东西:
find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \;
-type d
将确保只移动目录。 另一种选择是使用xargs
find /mnt/STStorage/ -type d -mtime +14 | xargs -I '{}' mv {} /mnt/LTStorage/
要添加要移动的内容,您可以为verbose
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