Получить автоматически обновленную символьную c ссылку на последний файл на основе grep для имени файла - PullRequest
0 голосов
/ 11 апреля 2020

Таким образом, адаптация этого SO ответа немного очень близка к решению:

ln -s target-directory/`ls -rt target-directory | grep .log | tail -n1` latest

но как я могу постоянно обновлять символьную ссылку, когда в каталоге появляется новый файл?

Можно ли заархивировать его с помощью inotifywait? Как я могу установить такую ​​работу в моей системе, которая работает в фоновом режиме?

1 Ответ

1 голос
/ 11 апреля 2020

Обратите внимание, что синтаксический анализ ls может привести к ошибкам. См. bash FAQ 99 .

Если доступен инструмент inotifywait, вы можете сделать что-то вроде обновления символической ссылки.

#!/bin/bash

function newest_log
{
    files=(*.log)
    newest=${files[0]}
    for f in "${files[@]}"; do
        if [[ $f -nt $newest ]]; then
            newest=$f
      fi
    done

    echo $newest
}

while inotifywait -e modify target-directory; do
    ln -s target-directory/$(newest_log) latest
done

Вы можете либо Запустите этот скрипт напрямую или настройте службу, такую ​​как systemd service.

...