如何编写一个脚本来监视当前目录中 .pdf 或 .PDF 文件的创建?

如何编写一个脚本来监视当前目录中 .pdf 或 .PDF 文件的创建?

我们只需要显示每分钟创建的新文件。我可以使用 watch 和 find 命令来使用 newermt 查找新文件或查找特定扩展名的文件。但是,如何同时做到这两点。

答案1

快速了解您可以做什么bash是:

 $ cat myscript.sh

 #!/usr/bin/bash
 while true; do
    timestamp=$(/usr/bin/date) # update of variable timestamp
    sleep 60  #  sleeps during 60s or 1min.
    find . -maxdepth 1 -type f \( -name "*.pdf" -o -name "*.PDF" \) -newermt "$timestamp"
 done

在要搜索其树的目录中运行脚本myscript.sh(使用 使其可执行后)。chmod a+x myscript.sh

如果您想停止该脚本并在其在前台运行时停止它,则需要使用 CTRL+C 手动终止该脚本。如果您想要更详细的信息,您可以随时提出其他问题或搜索互联网。

请注意,根据您在目录树中的深度,您的find命令可能需要时间来实际解析树,因此最终,使用这个简单的解决方案,您实际上可以每 60 秒或更长时间解析树文件,”多一点”是解析/统计文件所需的时间。如果这对您很重要,可以通过多种方法来纠正。

答案2

正如我在评论中提到的,您可以用来inotifywait监视特定目录,例如:

#!/usr/bin/env bash

while read -r path action file
  do 
    [[ $file == @(*.pdf|*.PDF) ]] && printf '%s %s\n' "File $file was ${action,,}d in $path"
  done < <(inotifywait -r -m testdir/ -e create,delete,moved_to)

结果应如下所示: 在此输入图像描述

相关内容