创建 tar 存档时添加目录

add a directory when creating tar archive

我想 tar 一些文件(和目录),但想创建一个额外的目录,这些文件应该位于其中。

因此,例如以下目录结构:

myproject
  + file1
  + file2
  + subdir1
    + file3

我 cd 进入 myproject 目录并想要创建 tar 存档

tar czf myproject.tgz --place-into-dir myproject-1.0 file2 subdir1

接收包含以下内容的 tar 存档:

myproject-1.0
  + file2
  + subdir1
    + file3

我正在寻找像上面虚构的“--place-into-dir”这样的选项。 因此,文件不应直接放入存档中,而应放入仅在 tar 存档中创建的附加目录中。

我想避免首先创建该目录,将所有文件复制到该目录,然后再次删除它们只是为了创建 tar 存档。

GNU tar 有 --transform 选项:

--transform=EXPRESSION, --xform=EXPRESSION

use sed replace EXPRESSION to transform file names

这应该对您有帮助:

tar --transform 's/^myproject$/[=10=]-1.0/' -czf myproject.tgz myproject

您可以使用 --transform:

在存档中即时创建一个目录
tar czf myproject.tgz --transform 's,^,myproject-1.0/,' file2 subdir1