如何使用 Tar 将绝对路径转换为相对路径?

如何使用 Tar 将绝对路径转换为相对路径?

这将保存在我计算机上的文件中,但我的老师也需要在他的计算机上进行编译。这是到目前为止的代码。我正在尝试将三个文件压缩为一个 TAR 文件。

#!/bin/bash

dd if=/dev/zero of=file.txt  bs=1701KB  count=1
dd if=/dev/zero of=filee.txt  bs=1780KB  count=1
dd if=/dev/zero of=fileee.txt  bs=1800KB  count=1

echo 'i dont really care at all about any of this' >> file.txt

echo 'just trying things out for fun' >> filee.txt

echo 'this is really boring i dont like it' >> fileee.txt

tar -czvf archive.tar.gz  /home/melwhiteastonia/file.txt /home/melwhiteastonia/filee.txt /home/melwhiteastonia/fileee.txt


gzip -l archive.tar.gz

答案1

使用-C选项tar更改到相关工作目录并按名称指定文件:

tar -C /home/melwhitesastonia -cvzf archive.tar.gz file.txt filee.txt fileee.txt

$PWD/archive.tar.gz请注意,如果您不希望存档位于同一目录中,您可能需要指定存档的绝对路径(例如, )。另请注意,您不需要对其进行 gzip,因为-ztar 的标志已经做到了这一点。

此外,您可能希望将文件放置在适当命名的目录中,而不是将它们直接放置在存档的根目录中,因为这是习惯做法,对用户来说更好。您可以通过指定目录名称而不是文件并从选项中删除该目录组件来实现此目的-C

答案2

通过论证--transform你可以做类似的事情

tar -czv --transform 's:home/melwhiteastonia/::g' -f archive.tar.gz \
    /home/melwhiteastonia/file.txt \
    /home/melwhiteastonia/filee.txt \
    /home/melwhiteastonia/fileee.txt

正则表达式是home/melwhiteastonia/因为无论如何tar都会删除前导。/

相关内容