创建比X年龄更新的符号链接文件,然后在文件老化后删除链接?
我每天都有很多文件和文件夹进来,这些文件和文件夹会自动被整理到不同的文件夹里。我想找个办法,自动找到这些文件和文件夹,并在一个叫“incoming”的文件夹里为它们创建快捷方式。只根据文件的年龄来查找应该就够了,不过如果能同时根据文件的拥有者来查找就更好了。一旦被链接的文件或文件夹达到一定的年龄,比如说5天,就自动从“incoming”文件夹中删除这些快捷方式。请问,这个能用简单的shell脚本或python脚本实现吗?这个脚本可以通过cron定时运行吗?谢谢!
2 个回答
1
我不太确定你想要的符号链接是什么样的,但我可以先给你一个初步的建议:
find /incoming -mtime -5 -user nr -exec ln -s '{}' /usr/local/symlinks ';'
这个命令会在 /incoming
文件夹中查找属于 nr
的文件,前提是这些文件的创建时间不超过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
2
使用incron来创建符号链接,然后在cron中用find -L
来删除它。