gpt4 book ai didi

linux - 对于每个文件修改,将其复制到另一个文件 bash

转载 作者:太空狗 更新时间:2023-10-29 11:45:15 25 4
gpt4 key购买 nike

我想运行服务来监听文件修改和每次添加到文件时将其从文件中删除并附加到另一个文件我试过这段代码,但它没有像进入无限循环那样工作

   inotifywait -m -e modify "$1" |
while read folder eventlist eventfile
do
cat "$1">>$DESTINATION_FILE
>$1
done

最佳答案

每次截断文件时,都会注册为修改,从而触发另一次截断等。尝试测试文件是否包含循环主体中的任何内容。

inotifywait -m -e modify "$1" |
while read folder eventlist eventfile
do
# Only copy-and-clear if the file is not empty
if [ -s "$1" ]; then
cat "$1" >> "$DESTINATION_FILE"
# What if the file is modified here?
>$1
fi
done

请参阅我在 cat 和截断之间的评论。您永远不会将这些修改放在 $DESTINATION_FILE 中,因为您会在循环的下一次迭代之前删除它们。这实际上是无法避免的,除非您的操作系统允许您在 cat 之前获得对 $1 的锁定,然后在截断后释放锁定,这样只有一个进程可以一次写入文件。

关于linux - 对于每个文件修改,将其复制到另一个文件 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19929925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com