如何使用fswatch

时间:2019-07-12 15:57:39

标签: bash macos file-management fswatch

我需要监视下载目录,并跟踪将文件写入目录的顺序。我知道这在macOS中是唯一的方法是fswatch,但是与Linux上的inotifywatch相比,文档似乎很稀疏。

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

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

1 个答案:

答案 0 :(得分:0)

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

#!/bin/bash
echo "new file is added $1"
filename=$(basename ${1})
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 "$1"' - {}
  • (./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 ${1});echo $filename;if [ $filename != "track_order.txt"  ]; then echo "${filename}" >> track_order.txt; else echo "order is updated";fi' - {}

enter image description here