我正在尝试编写一个“看门人”脚本,该脚本将作为一项cron
作业在一个特定目录中运行。它应该创建一个名称中包含创建日期的存档文件夹,然后查找特定类型的所有文件并将其移动到这个新文件夹中。
这是我的测试代码:
#!/bin/bash
today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;
它设法正确创建文件夹,但无法将找到的文件移动到该文件夹中。我只是将其作为一个小测试,并且脚本和文件都是由同一用户创建的。如果我添加sudo
到开头,它会尝试移动文件,但会发生的情况是,它只从当前目录中删除文件,但不会将它们放入新创建的目录中。
我不想移动 .zip 文件。只是一个例子。
我尝试过chmod 777
同时使用文件和文件夹。同样的事情也会发生。
我正在运行 ubuntu 14.04 LTS。
如果有更好的方法,请告诉我。
任何正确方向的指示将不胜感激。
编辑
现在可以了。
我将find
声明更新为:
find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;
答案1
在当前目录而不是子目录中查找文件:
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
排除目录方法:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
请注意,这将仅排除今天的存档,而您将拥有其他存档,我建议使用第一个命令,或在主目录之外创建存档目录!