使用 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 [关闭]