在bash中对所有最近修改过的文件运行脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在bash中对所有最近修改过的文件运行脚本相关的知识,希望对你有一定的参考价值。
我想要:
- 在文件夹中查找最新修改的文件
- 更改文件夹中的一些文件
- 查找在步骤1的文件之后修改的所有文件
- 从步骤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
的目录,其中包含file1
和file2
。以下脚本监视整个目录并回显文件名:
#!/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中对所有最近修改过的文件运行脚本的主要内容,如果未能解决你的问题,请参考以下文章