Este é o propósito do ln
's -f
opção: ele remove arquivos de destino existentes, se houver, antes de criar o link.
ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
criará o link simbólico /path/to/recent/file
apontando para /path/to/data/folder/month/date/hour/minute/file
, substituindo qualquer arquivo existente ou link simbólico para um arquivo, se necessário (e funcionando bem, se já não existir nada).
Se um diretório ou link simbólico para um diretório já existir com o nome do destino, o link simbólico será criado dentro dele (para que você acabe /path/to/recent/file/file
no exemplo acima). A -n
opção, disponível em algumas versões do ln
, cuidará dos links simbólicos para os diretórios, substituindo-os conforme necessário:
ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file
O POSIXln
não especifica, -n
portanto você não pode confiar nele em geral. Grande parte do ln
comportamento é definido pela implementação, então você realmente precisa verificar as especificidades do sistema que está usando. Se você estiver usando o GNUln
, também poderá usar as opções -t
e -T
, para tornar seu comportamento totalmente previsível na presença de diretórios ( ou seja, falhar em vez de criar o link dentro do diretório existente com o mesmo nome).