PopOS 22.04下inotifywait捕获.goutputstream-xxxx而非真实文件名求助
解决inotifywait监听Dropbox文件夹捕获临时文件名的问题
问题根源
.goutputstream-xxxx是GTK/GNOME系应用保存文件时生成的临时文件,写入完成后会重命名为真实文件名。Dropbox同步这类文件时,inotifywait的create事件会先触发临时文件的创建,只有后续的重命名事件才会对应真实文件名。
可行解决方法
1. 切换监听事件(最直接方案)
把监听的create事件换成moved_to,因为文件写入完成后会被移动(重命名)到目标目录,这个事件触发时拿到的就是真实文件名:
inotifywait -m -e moved_to --format %f /home/dave/Dropbox/Inbound | while read -r filename; do # 此处编写你的文件处理逻辑 done
注意:--format %f仅输出文件名,因此read无需额外的event变量接收事件。
2. 兼容多场景的处理逻辑
如果需要覆盖直接创建文件的场景,可同时监听create、close_write和moved_to事件,过滤临时文件的干扰:
inotifywait -m -e create,close_write,moved_to --format "%e %f" /home/dave/Dropbox/Inbound | while read -r event filename; do # 跳过临时文件的创建事件 if [[ $event == "CREATE" && $filename == .goutputstream-* ]]; then continue fi # 处理真实文件的完成事件 if [[ $event == "CLOSE_WRITE,CLOSE" || $event == "MOVED_TO" ]]; then # 替换为你的实际处理代码 echo "开始处理文件:$filename" fi done
3. 更新Dropbox客户端
旧版本Dropbox可能在同步临时文件时存在异常,先更新到最新版本尝试:
sudo apt update && sudo apt upgrade dropbox
内容的提问来源于stack exchange,提问作者DLMatthews
相关产品推荐
相关产品推荐

