如何使用bash归档所有目录?

如何使用bash归档所有目录?

我正在尝试慢慢地学习 bash,但发现如果没有适合我想要使用的东西的实际示例,很难掌握更多的技术方面。为此,我想知道如何使用 bash(和 7zip)来存档一些照片,以准备将它们存储在网上。

本质上,我认为这就像为每个目录制作 .7z 存档一样“简单”,为每个存档分配与相关目录相同的名称。所有目录的命名都没有空格,如果这很重要的话。

感谢所有的建议。

答案1

foo将目录压缩到名为foo.7z using的存档的方法7z是使用命令a(“add”):

7z a foo.7z foo

要对多个目录执行此操作,可以使用循环:

for dir in foo bar baz; do
    7z a "$dir".7z "$dir"
done

(这对于包含空格的目录名是安全的,因为 $dir被引号引起来,但对于以破折号开头的目录名则不然;这会导致7z尝试将它们解释为选项。)

如果您打算归档的目录名称共享一个模式,那么您可以在 for 循环中使用该模式,而不是显式列出所有目录,例如for dir in [0-9][0-9][0-9][0-9][0-9][0-9]-*; ....

请注意,7z 文档警告不要在 Unix 上使用 7z 格式进行存档,因为它不保留所有权信息。这对你来说可能重要也可能不重要。

相关内容