我正在尝试创建一个监视文件夹及其子文件夹的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仍然被压缩)?
答案 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