我是bash脚本的新手,我必须创建一个脚本,该脚本将在我工作的组内的所有计算机上运行(因此它不仅仅是检查一台计算机)。我们有一个保存特定文件信息的电子表格,我正在努力自动更新该电子表格。我已经有了一个现有的python脚本,它收集所需的信息并写入电子表格。
我需要的是一个bash脚本(可能是cron作业?),只要用户删除与指定文件路径中某个扩展名匹配的文件,就会激活该脚本。在完全删除之前,脚本应保留文件名。除了这个名字,我不需要任何其他信息。
有没有人对我应该从哪里开始有任何建议?我搜索了一下但没有找到任何有用的东西。
这将是:
for folders and files in path:
if file ends in .txt and is being deleted:
save file name
答案 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
的文件。
类似的程序可用于OSX。请参阅"Is there a command like “watch” or “inotifywait” on the Mac?"。