创建一个bash脚本,在删除文件时运行并更新日志

时间:2014-10-10 20:00:49

标签: bash file cron delete-file

我是bash脚本的新手,我必须创建一个脚本,该脚本将在我工作的组内的所有计算机上运行(因此它不仅仅是检查一台计算机)。我们有一个保存特定文件信息的电子表格,我正在努力自动更新该电子表格。我已经有了一个现有的python脚本,它收集所需的信息并写入电子表格。

我需要的是一个bash脚本(可能是cron作业?),只要用户删除与指定文件路径中某个扩展名匹配的文件,就会激活该脚本。在完全删除之前,脚本应保留文件名。除了这个名字,我不需要任何其他信息。

有没有人对我应该从哪里开始有任何建议?我搜索了一下但没有找到任何有用的东西。

这将是:

 for folders and files in path:
      if file ends in .txt and is being deleted:
            save file name

1 个答案:

答案 0 :(得分:1)

要保存在某个目录.txt或其任何子目录中删除的每个文件path的名称,请运行:

inotifywait -m -e delete --format "%w%f" -r "path" 2>stderr.log | grep '\.txt$' >>logfile

说明:

  • -m告诉inotifywait继续运行。默认设置是在第一个事件

  • 之后退出
  • -e delete告诉inotifywait仅报告文件删除事件。

  • --format "%w%f"告诉inotifywait只打印已删除文件的名称

  • path是要关注的目标目录。

  • -r告诉inotifywait以递归方式监视path的子目录。

  • 2>stderr.log告诉shell将stderr输出保存到名为stderr.log的文件中。只要工作正常,您可以忽略此文件。

  • >>logfile告诉shell将所有输出重定向到文件logfile。如果您关闭此部分,输出将被定向到标准输出,您可以在删除文件时实时观看。

  • grep '\.txt$'将输出限制为扩展名为.txt的文件。

Mac OSX

类似的程序可用于OSX。请参阅"Is there a command like “watch” or “inotifywait” on the Mac?"