浏览Shell中的文件夹

时间:2014-01-17 11:11:02

标签: shell

我是脚本新手。我在目录中有很多文件夹。我想写一个脚本到每个文件夹,检查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。

提前致谢

1 个答案:

答案 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)相比,会降低所需的磁盘空间。