Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何检查目录中的任何文件是否已更改_Linux_File_Directory_Filesystems_Stat - Fatal编程技术网

Linux 如何检查目录中的任何文件是否已更改

Linux 如何检查目录中的任何文件是否已更改,linux,file,directory,filesystems,stat,Linux,File,Directory,Filesystems,Stat,给定一个目录,我想知道目录中的文件是否被修改过。布尔值,即如果目录的状态已从以前更改 我不想为此运行文件监视程序服务,因为我不需要知道哪个文件已被修改,或者如果许多文件发生更改,就会收到许多事件 我从统计中查看了atime、mtime和ctime 例如:对于已包含sample.txt的名为taskmaster的目录 输出 档案:监工 大小:245760块:480 IO块:4096目录 设备:802h/2050d节点:1309314链路:1 访问权限:0777/DRWXRWX Uid:0/根Gid

给定一个目录,我想知道目录中的文件是否被修改过。布尔值,即如果目录的状态已从以前更改

我不想为此运行文件监视程序服务,因为我不需要知道哪个文件已被修改,或者如果许多文件发生更改,就会收到许多事件

我从统计中查看了atime、mtime和ctime

例如:对于已包含sample.txt的名为taskmaster的目录

输出

档案:监工 大小:245760块:480 IO块:4096目录 设备:802h/2050d节点:1309314链路:1 访问权限:0777/DRWXRWX Uid:0/根Gid:0/根 访问时间:2020-05-22 21:25:06.226421200+0530 修改:2020-05-22 21:25:06.222175900+0530 更改:2020-05-22 21:25:06.222175900+0530 出生:- 修改文件夹内容后

修改现有文件 echo modify>taskmaster/sample.txt 统计任务主管给出

档案:监工 大小:245760块:480 IO块:4096目录 设备:802h/2050d节点:1309314链路:1 访问权限:0777/DRWXRWX Uid:0/根Gid:0/根 访问时间:2020-05-22 21:25:06.226421200+0530 修改:2020-05-22 21:25:06.222175900+0530 更改:2020-05-22 21:25:06.222175900+0530 出生:- 完全相同的输出

如果未删除或删除任何文件,则访问和修改时间不会更改。如何实现这一点?

我认为您需要对单个文件进行统计,例如:

previous="$(stat *)"

while sleep 60; do
    current="$(stat *)"
    if  [[ $current != $previous ]]; then
        echo "Some files changed."
    fi
    previous=$current
done

如果该文件夹中有数千个文件,这是否有效?不幸的是,这是我的用例,仅当某些内容发生更改时才压缩目录,因为我有很多files@PhaniRithvij,stat*处理10000个文件需要7秒。好的,如果没有更好的解决方案,我会接受这个。如果我在一段时间内没有收到更好的答案,我会接受你的答案。因为我想这会更有效率。我知道,善良的先生。我以前接受过一些答案。
previous="$(stat *)"

while sleep 60; do
    current="$(stat *)"
    if  [[ $current != $previous ]]; then
        echo "Some files changed."
    fi
    previous=$current
done