【问题标题】:Archive old directories and delete them归档旧目录并删除它们
【发布时间】:2014-03-14 15:38:11
【问题描述】:

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

获取我的目录列表

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

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

【问题讨论】:

  • 你熟悉unix.stackexchange.com吗?您还应该在那里搜索相关答案。
  • @BenVoigt:感谢您的提示。谷歌把我扔在这里,它对 unix.stackexchange.com 只字未提。总之很高兴知道

标签: linux bash directory archive delete-file


【解决方案1】:

试试这个单行:

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

这一行进入每个目录,在没有父目录的情况下压缩其内容并在成功时删除目录,但在失败时保留目录。

祝你好运:)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2011-01-15
    相关资源
    最近更新 更多