Bash Inotifywait子文件夹zip创建

Bash Inotifywait子文件夹zip创建,bash,zip,inotify,inotifywait,Bash,Zip,Inotify,Inotifywait,我正在尝试创建一个bash脚本来监视文件夹及其子文件夹。 基本上,我有其他的应用程序,使子文件夹和添加文件到他们。 我想将进入这些子文件夹的文件添加到以子文件夹命名的zip中。将在其上删除子文件夹中的文件 我不熟悉linux和bash脚本,所以我有点不及格:s #!/bin/bash inotifywait -mr -e create /home/user/files | while read filename eventlist eventfile do IFS='/' array=($e

我正在尝试创建一个bash脚本来监视文件夹及其子文件夹。 基本上,我有其他的应用程序,使子文件夹和添加文件到他们。 我想将进入这些子文件夹的文件添加到以子文件夹命名的zip中。将在其上删除子文件夹中的文件

我不熟悉linux和bash脚本,所以我有点不及格:s

#!/bin/bash

inotifywait -mr -e create /home/user/files |
while read filename eventlist eventfile
do

IFS='/' array=($eventfile)
zip /home/user/zips/$(array[1]) $(array[2])

done
所以我有一个文件夹/home/usr/files/,应用程序在其中为iInstance创建子文件夹…files/files1/。之后,应用程序将文件放在files1子文件夹中。 我希望将这些文件压缩到名为files1.zip的文件夹中。 我不想在那里也有子文件夹,只是文件


也可以通过简单地将扩展添加到zip命令来压缩到另一个扩展(ofc仍在压缩中)?

脚本中有几个问题。首先,您应该使用
${array[1]}
而不是
$(array[1])
访问数组元素。我做了一些修改,这似乎对我的系统起了作用:

#!/bin/bash
inotifywait -mr -e create files |
while read -r path eventlist eventfile
do
    [[ $eventlist == *ISDIR* ]] && continue;
    folder=$(basename "$path")
    zip -j "$folder.zip" "$path/$eventfile"
done

谢谢,我看我也忘了忽略文件夹的创建。我将在访问我的linux系统后立即尝试此功能。也可以在其他文件夹中创建此文件吗?好的,坐在我的raspberry pi旁,我担心它对我不起作用。它正在显示/home/pi/。。。创建文件名,但我无法实时找到zip文件。@KevinV它应该在您运行脚本的目录中。我已经在那里查找过了,即使为文件夹添加了echo,path也没有返回任何内容。@KevinV奇怪。如果您
echo“zip-j$folder.zip$path/$eventfile”
您可以查看命令,以查看生成的内容