【问题标题】: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