Inotifywait子文件夹zip创建

时间:2013-09-16 08:23:01

标签: 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=($eventfile)
zip /home/user/zips/$(array[1]) $(array[2])

done

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

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

1 个答案:

答案 0 :(得分:1)

您的脚本中存在多个问题。首先,您应该使用${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