创建 tar 存档时添加目录

rad*_*lan 4 linux bash tar create-directory

我想压缩一些文件(和目录),但想创建一个额外的目录,这些文件应该驻留在其中。

例如对于以下目录结构:

myproject
  + file1
  + file2
  + subdir1
    + file3
Run Code Online (Sandbox Code Playgroud)

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

tar czf myproject.tgz --place-into-dir myproject-1.0 file2 subdir1
Run Code Online (Sandbox Code Playgroud)

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

myproject-1.0
  + file2
  + subdir1
    + file3
Run Code Online (Sandbox Code Playgroud)

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

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

kal*_*alj 10

您可以使用--transform以下命令在存档内动态创建目录 :

tar czf myproject.tgz --transform 's,^,myproject-1.0/,' file2 subdir1
Run Code Online (Sandbox Code Playgroud)

  • 当然,替换表达式中的目录名后应该有一个斜杠:'s,^,myproject-1.0/,' (2认同)

Ant*_*rov 5

GNU tar 有--transform选项:

--transform=表达,--xform=表达

使用 sed 替换 EXPRESSION 来转换文件名

这应该可以帮助您:

tar --transform 's/^myproject$/\0-1.0/' -czf myproject.tgz myproject
Run Code Online (Sandbox Code Playgroud)