Bash 脚本无法移动文件

Bash 脚本无法移动文件

我正在尝试编写一个“看门人”脚本,该脚本将作为一项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/" {} \;

请注意,这将仅排除今天的存档,而您将拥有其他存档,我建议使用第一个命令,或在主目录之外创建存档目录!

相关内容