如何使用 fswatch 跟踪目录中新创建文件的顺序

How to track order of newly created files in directory with fswatch

我需要监控下载目录,并跟踪文件写入目录的顺序。我知道这在 macos 中可行的唯一方法是 fswatch,但与 linux 上的 inotifywatch 相比,文档似乎相当稀疏​​。

例如,如果 001.jpg 然后 003.jpg 然后 002.jpg 下载到目录(按此顺序),我需要一个如下所示的变量:001.jpg 003.jpg 002.jpg

在这种情况下我只需要监控新文件,而不是修改过的文件。例如,如果修改了001.jpg,则不应将其移至列表末尾。

Bash 脚本 handle_order.sh 将维持 track_order 文本文件中的顺序

#!/bin/bash
echo "new file is added "
filename=$(basename )
echo $filename
if [ $filename != "track_order.txt"  ]; then
echo "${filename}" >> track_order.txt
else
echo "order is updated"
fi

fswatch 命令

fswatch ./DRS-1.1.0/ --event Created | xargs -I '{}' sh -c './handle_order.sh ""' - {}
  • (./DRS-1.1.0/)你需要监控的目录名
  • (handle_order.sh) bash 将处理订单并更新 track_order.txt 文件的脚本
  • (Created) 只创建一个事件

更新:

删除 handle_order.sh 和 运行 作为单个命令

fswatch ./DRS-1.1.0/ --event Created | xargs -I '{}' sh -c 'filename=$(basename );echo $filename;if [ $filename != "track_order.txt"  ]; then echo "${filename}" >> track_order.txt; else echo "order is updated";fi' - {}