如何指定一个公共父文件夹来将不同来源的文件打包到其中

如何指定一个公共父文件夹来将不同来源的文件打包到其中

这是我正在运行的当前命令:

tar --directory=/Users/joe/images -czvf images.tgz dir1/image1.jpg dir2/image2.jpg

如您所见,这是使用/Users/joe/images根目录,然后包含该根下不同目录的图像。

但是,我需要能够将这些图像包含在 tar 内的公共父级下,这样如果我随后打开该 tar 文件,我将看到以下目录结构:

  • 常见/image1.jpg
  • 常见/image2.jpg

是否有一个标志或方法来执行此命令,允许我指定文件应位于的“父”目录?

答案1

--directory建议您使用 GNU 或现代 BSD tar。

使用 GNU tar

tar --directory=/Users/joe/images --transform='s|[^/]*|common|' \
  -czvf images.tgz dir1/image1.jpg dir2/image2.jpg

使用 BSD tar:

tar --directory=/Users/joe/images -s'|[^/]*|common|' \
  -czvf images.tgz dir1/image1.jpg dir2/image2.jpg

想法是相同的:将引导路径组件替换为common.

请注意,该替换也适用于其中的符号链接目标(您可以使用S替换标志来禁用它)。

相关内容