2017-07-23 51 views
0

我想写一个bash脚本,将所有子文件夹压缩到.cbz文件,而离开顶级文件夹独立,并且不存档已压缩使用7zip的文件夹。Bash脚本归档子文件夹与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

使用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