存档旧目录并删除它们

时间:2014-03-14 15:38:11

标签: linux bash directory archive delete-file

我们如何归档旧目录并在之后删除它们?如果我们假设一个旧目录是至少在三天前修改过的目录,我可以使用

获取我的目录列表

find . -mindepth 2 -type d -mtime 3

返回类似

的列表
./dir1/1394547493
./dir2/1394525075
./dir2/1394531732
./dir3/1394546562

现在我们需要这个列表中的任何目录在相应的dirX中创建一个.ZIP存档,其中只包含来自它的文件(这些目录中没有其他目录),并在之后删除子目录。最后,我们的结构应该是这样的

./dir1/1394547493.zip
./dir2/1394525075.zip
./dir2/1394531732.zip
./dir3/1394546562.zip

生成的档案不得包含任何路径。

1 个答案:

答案 0 :(得分:1)

试试这个单行:

    for dir in $(find . -mindepth 2 -type d -mtime 3); do cd "$dir" && zip ../$(basename "$dir") * && cd - && rm -rf "$dir" || cd -; done

这个单行输入每个目录,在没有父目录的情况下压缩其内容,并在成功时删除目录,但在发生故障时保留目录。

祝你好运:)

编辑:您的目录名称必须不包含空格或制表符