如何检查目录中的任何文件是否已更改
how to check if any of the files in a directory changed
给定一个目录,我想知道目录中的文件是否被修改过。 (布尔值)即目录的状态是否与以前相比发生了变化。
我不想为此 运行 文件观察器服务,因为我不需要知道哪个文件已被修改(或者如果许多文件更改会收到许多事件)
我看过 atime
、mtime
、ctime
来自 stat
例如:对于名为 taskmaster
的目录,其中已经包含 sample.txt
stat taskmaster
产出
File: taskmaster
Size: 245760 Blocks: 480 IO Block: 4096 directory
Device: 802h/2050d Inode: 1309314 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-05-22 21:25:06.226421200 +0530
Modify: 2020-05-22 21:25:06.222175900 +0530
Change: 2020-05-22 21:25:06.222175900 +0530
Birth: -
我修改文件夹内容后
# modify an existing file
echo modify > taskmaster/sample.txt
stat taskmaster
给出
File: taskmaster
Size: 245760 Blocks: 480 IO Block: 4096 directory
Device: 802h/2050d Inode: 1309314 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-05-22 21:25:06.226421200 +0530
Modify: 2020-05-22 21:25:06.222175900 +0530
Change: 2020-05-22 21:25:06.222175900 +0530
Birth: -
完全相同的输出。
如果没有文件被移除或删除,访问和修改时间不会改变。我怎样才能做到这一点?
我认为您需要对单个文件执行 stat
,如下所示:
previous="$(stat *)"
while sleep 60; do
current="$(stat *)"
if [[ $current != $previous ]]; then
echo "Some files changed."
fi
previous=$current
done
给定一个目录,我想知道目录中的文件是否被修改过。 (布尔值)即目录的状态是否与以前相比发生了变化。
我不想为此 运行 文件观察器服务,因为我不需要知道哪个文件已被修改(或者如果许多文件更改会收到许多事件)
我看过 atime
、mtime
、ctime
来自 stat
例如:对于名为 taskmaster
的目录,其中已经包含 sample.txt
stat taskmaster
产出
File: taskmaster
Size: 245760 Blocks: 480 IO Block: 4096 directory
Device: 802h/2050d Inode: 1309314 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-05-22 21:25:06.226421200 +0530
Modify: 2020-05-22 21:25:06.222175900 +0530
Change: 2020-05-22 21:25:06.222175900 +0530
Birth: -
我修改文件夹内容后
# modify an existing file
echo modify > taskmaster/sample.txt
stat taskmaster
给出
File: taskmaster
Size: 245760 Blocks: 480 IO Block: 4096 directory
Device: 802h/2050d Inode: 1309314 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-05-22 21:25:06.226421200 +0530
Modify: 2020-05-22 21:25:06.222175900 +0530
Change: 2020-05-22 21:25:06.222175900 +0530
Birth: -
完全相同的输出。
如果没有文件被移除或删除,访问和修改时间不会改变。我怎样才能做到这一点?
我认为您需要对单个文件执行 stat
,如下所示:
previous="$(stat *)"
while sleep 60; do
current="$(stat *)"
if [[ $current != $previous ]]; then
echo "Some files changed."
fi
previous=$current
done