根据文件名上的 grep,获取自动更新的符号 link 到最新文件
Get an auto updated symbolic link to the latest file, based on grep on file name
所以稍微调整 this SO answer 就非常接近解决方案:
ln -s target-directory/`ls -rt target-directory | grep .log | tail -n1` latest
但是当目录中出现新文件时,我如何才能真正持续更新 sym-link?
可以使用 inotifywait
存档吗?我怎么能在我的系统上安装这样一个在后台处理的工作?
请注意,解析 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 服务的服务。
所以稍微调整 this SO answer 就非常接近解决方案:
ln -s target-directory/`ls -rt target-directory | grep .log | tail -n1` latest
但是当目录中出现新文件时,我如何才能真正持续更新 sym-link?
可以使用 inotifywait
存档吗?我怎么能在我的系统上安装这样一个在后台处理的工作?
请注意,解析 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 服务的服务。