Bash脚本使用7zip归档子文件夹而不归档归档

时间:2017-07-23 23:03:01

标签: bash 7zip

我正在尝试编写一个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文件夹的任何新增内容的子文件夹,但脚本也会压缩以前存档的文件夹,这不是我的意图。

1 个答案:

答案 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