我是脚本新手。我在目录中有很多文件夹。我想写一个脚本到每个文件夹,检查x天以前的文件,将它们移动到另一个位置,然后删除。
我尝试过以下代码片段来浏览文件夹。
for D in $( find /path/folder -mindepth 1 -maxdepth 1 -type d) ; do
echo $D ;
find -type f -mtime +30 -exec {} s3cmd put s3://path \;
s3cmd用于将文件上传到s3
但是它显示了一个例外
find:./ folder/2013-07-29.tsv:Permission denied
我也尝试过使用sudo。
提前致谢
答案 0 :(得分:0)
以下将检查当前目录(。)中大于9分钟的所有文件(而不是目录):
$ find . -type f -mmin -9
./test/test1/file1_3
./test/test3/file3_3
./test/test2/file2_3
$
$ find . -type f -mmin -9 -exec cp {} ../bak \;
$ ls ../bak
file1_3 file2_3 file3_3
以下将“复制”到../ bak
find . -type f -mmin -9 -exec cp {} ../bak \;
你想要几天,正如你所建议的那样,使用-mtime 10
代替(代表10天前)。
我怀疑您的错误可能与以下内容有关:-exec {} s3cmd
。也就是说,你要求执行一个查找结果的命令(毫无疑问./folder/2013-07-29.tsv是你的文件之一,而不是你想要执行的命令 - 必须是{ {1}}?
如果是这种情况,请重新排列您的查找执行人员:
s3cmd
您也可以压缩找到的文件,如下所示:
find . -type f -mtime -30 -exec s3cmd put {} s3://path \;
这是通过直接流式传输结果(通过find . -type f -mmin -9 | xargs zip ../bak/backup.zip
完成的,因此与移动或复制(然后是zip,send)相比,会降低所需的磁盘空间。