2

我正在尝试制作一个监控文件夹及其子文件夹的 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/,应用程序在其中为 isnttance ...files/files1/ 创建子文件夹。之后,应用程序将文件放置在 files1 子文件夹中。我希望将这些文件压缩到一个名为 files1.zip 的文件夹中。我也不想在那里有子文件夹,只是文件。

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

4

1 回答 1

2

您的脚本中有几个问题。一方面,您应该使用${array[1]}和 not访问数组元素$(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
于 2013-09-16T10:53:21.160 回答