用于移动文件并使用索引重命名的 shell 脚本

用于移动文件并使用索引重命名的 shell 脚本

考虑两个目录AB.

A包含一个文本文件A.txt,每 3 秒更改其内容。

shell脚本是移动A.txt到目录B并将其重命名为A_1.txt.

3 秒后,脚本应复制A.txtA_2.txt目录中B

在按下分隔符之前,脚本不应终止。

答案1

使用bashksh93inotifywait

i=0
while true; do
    inotifywait -e close_write A/A.txt
    cp A/A.txt "B/A_$(( ++i )).txt"
done

Ctrl+C当按下时脚本终止。

注意:由于我不在 Linux 上,所以我无法inotifywait在我的机器上实际捕获该close_write事件,但我希望它能在 Linux 上正确执行此操作。

inotifywait一旦打开文件A/A.txt进行写入的外部进程完成写入并关闭文件,对 的调用就会返回。这允许脚本继续将文件复制到目录B

这样做比尝试将脚本与每隔一段时间写入文件的进程同步更方便。

相关内容