Не совсем уверен, что вы хотите символические ссылки на , но вот первый выстрел:
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