【问题标题】:symlink files newer than X age, then later remove symlink once file ages?符号链接文件比 X 年龄更新,然后在文件老化后删除符号链接?
【发布时间】:2011-02-14 17:24:34
【问题描述】:

我每天都会收到大量文件/文件夹,这些文件/文件夹会自动分类到各种文件夹中。我正在寻找一种方法来自动查找这些文件/文件夹并在“传入”文件夹中创建指向它们的符号链接。搜索文件年龄应该足以找到文件,但是搜索年龄和所有者将是理想的。然后,一旦链接的文件/文件夹达到特定年龄,比如 5 天,从“传入”文件夹中自动删除指向它们的符号链接。这可能与可以使用 cron 运行的简单 shell 或 python 脚本有关吗?谢谢!

【问题讨论】:

    标签: python linux bash unix scripting


    【解决方案1】:

    使用 incron 创建符号链接,然后在 cron 中使用 find -L 来破坏它。

    【讨论】:

      【解决方案2】:

      不太确定你想要什么符号链接,但这是第一个镜头:

      find /incoming -mtime -5 -user nr -exec ln -s '{}' /usr/local/symlinks ';'
      

      nr 拥有的/incoming 中查找不到5 天的任何内容并将其链接到/usr/local/symlinks。不幸的是ln 没有一个很好的选择来忽略已经存在的东西。你最好编写一个脚本来链接事物,同时你可以让事情变得更有效率:

      find /incoming -mtime -5 -user nr -print0 | xargs -0 mylink
      

      mylink 在哪里

      #!/bin/bash
      for i
      do
        link=/usr/local/symlinks/"$(basename "$i")"
        [[ -L "$link" ]] || ln -s "$i" /usr/local/symlinks
      done
      

      如果您想提高更多的效率,您可以累积要链接的文件列表 在一个数组中,然后用一个 ln 命令将它们全部链接起来,但这是很多符号,我可能不会打扰。

      删除符号链接指向超过 5 天的文件:

      find -L /usr/local/symlinks -mtime +5 -user nr -exec rm '{}' ';'
      

      或者你可以再次使用xargs:

      find -L /usr/local/symlinks -mtime +5 -user nr -print0 | xargs -0 rm -f
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-14
        • 2011-02-27
        • 2010-11-11
        • 1970-01-01
        • 2018-09-02
        • 2021-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多