我正在尝试编写一个bash脚本,将所有子文件夹压缩为.cbz文件,同时保留顶级文件夹,并且不使用7zip存档已经压缩的文件夹。
这是我写的:
#!/bin/bash
for folder in /home/angelucifer/Documents/Personal/MangaLib/*/*
do
7z a -mx0 -mmt2 -tzip "${folder%/}.cbz" "$folder"
rm -rf "$folder"
done
我当前的问题似乎是它将存档已压缩的文件夹,但其他一切正常。
我指定目录的原因是为了避免意外归档我的主文件夹的内容......再次。
我对此脚本的意图是进入我的MangaLib文件夹,并将其中的文件夹内容存档,而不归档这些文件夹,这就是地址中两个通配符的用途。然后,它应该删除原始文件夹并只保留.cba文件。
同样,问题是我会定期运行此脚本来压缩我的MangaLib文件夹的任何新增内容的子文件夹,但脚本也会压缩以前存档的文件夹,这不是我的意图。
答案 0 :(得分:0)
使用file
命令查找文件类型。然后只拉链你需要的那些。
#!/bin/bash
for folder in /home/angelucifer/Documents/Personal/MangaLib/*/*
do
if ! `file $folder | grep -i zip > /dev/null 2>&1`; then
##Most of the zip utilities contain "zip" when checked for file type.
##grep for the expression that matches your case
7z a -mx0 -mmt2 -tzip "${folder%/}.cbz" "$folder"
rm -rf "$folder"
fi
done