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

Posted

技术标签:

【中文标题】使用 7zip 归档子文件夹而不归档档案的 Bash 脚本【英文标题】:Bash script to archive sub-folders with 7zip without archiving archives 【发布时间】:2017-07-23 23:03:00 【问题描述】:

我正在尝试编写一个 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】:

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

【讨论】:

以上是关于使用 7zip 归档子文件夹而不归档档案的 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用 7zip 命令将目录中的文件归档到单个 zip [关闭]

让ubuntu归档管理器处理.rar和.7zip文件

我下了一个7zip文件用WinRAR能打开吗?打不开怎么办???

sh 创建和解压缩归档命令行7zip

在Linux 中如何归档文件和目录

tar归档