在bash中对所有最近修改过的文件运行脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在bash中对所有最近修改过的文件运行脚本相关的知识,希望对你有一定的参考价值。

我想要:

  1. 在文件夹中查找最新修改的文​​件
  2. 更改文件夹中的一些文件
  3. 查找在步骤1的文件之后修改的所有文件
  4. 从步骤2开始对这些文件运行脚本

这就是我最终的结果:

#!/bin/bash
var=$(find /home -type f -exec stat {} --printf="%y
" ; |
     sort -n -r |
     head -n 1)
echo $var
sudo touch -d $var /home/foo
find /home/ -newer /home/foo

有人可以帮助我实现这些行动吗?

答案

使用inotifywait来监控文件并检查更改

inotifywait -m -q -e modify --format "%f" {Path_To__Monitored_Directory}

此外,您可以将其输出到文件,循环它的内容并在每个条目上运行您的脚本。

 inotifywait -m -q -e modify --format "%f" -o {Output_File} {Path_To_Monitored_Directory}

样本输出:

 file1
 file2

我们正在监视名为/tmp/dir的目录,其中包含file1file2。以下脚本监视整个目录并回显文件名:

#!/bin/bash

while read ch
do
    echo "File modified= $ch"
done < <(inotifywait -m -q -e modify --format "%f" /tmp/dir)

运行此脚本并修改file1 echo "123" > /tmp/dir/file1,该脚本将输出以下内容:

File modified= file1

你也可以看看这个stackoverflow answer

以上是关于在bash中对所有最近修改过的文件运行脚本的主要内容,如果未能解决你的问题,请参考以下文章

怎么修改git提交过的内容

SVN查看修改过的文件

linux命令历史

在 Linux shell 脚本中检索最近修改过的子目录?

linux脚本,自动备份前一天修改过的文件并且删除7天前的文件

用于并行运行 AWS Cli 命令以减少时间的 Bash 脚本