如何排除 tar 的绝对路径?

发布于 2024-09-07 08:31:47 字数 216 浏览 8 评论 0原文

我正在运行一个 PHP 脚本,它可以获取我想要压缩的文件的绝对路径。这是我的语法:

tar -cf tarname.tar -C /www/path/path/file1.txt /www/path/path2/path3/file2.xls

当我解压它时,它会创建文件的绝对路径。如何仅显示 /path 及其下的所有内容?

I am running a PHP script that gets me the absolute paths of files I want to tar up. This is the syntax I have:

tar -cf tarname.tar -C /www/path/path/file1.txt /www/path/path2/path3/file2.xls

When I untar it, it creates the absolute path to the files. How do I get just /path with everything under it to show?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

风筝在阴天搁浅。 2024-09-14 08:31:47

您错误地使用了 -C 开关,该开关用于更改目录。所以你需要做的是:

tar -cf tarname.tar -C /www/path path/file1.txt path2/path3/file2.xls

或者如果你想打包 /www/path 下的所有内容:

tar -cf tarname.tar -C /www/path .

你可以多次使用 -C 开关。

You are incorrectly using the -C switch, which is used for changing directories. So what you need to do is:

tar -cf tarname.tar -C /www/path path/file1.txt path2/path3/file2.xls

or if you want to package everything under /www/path do:

tar -cf tarname.tar -C /www/path .

You can use -C switch multiple times.

但可醉心 2024-09-14 08:31:47

如果要删除文件名的前 n 个前导组件,则需要 strip-components。因此,在您的情况下,在提取时,请执行

tar xvf tarname.tar --strip-components=2

手册页 有一个 tar 有很多选项,包括这个。某些早期版本的 tar 使用 --strip-path 来执行此操作。

If you want to remove the first n leading components of the file name, you need strip-components. So in your case, on extraction, do

tar xvf tarname.tar --strip-components=2

The man page has a list of tar's many options, including this one. Some earlier versions of tar use --strip-path for this operation instead.

为人所爱 2024-09-14 08:31:47

对我来说,以下效果最好:

tar xvf some.tar --transform 's?.*/??g'

--transform 参数是 sed 的替换正则表达式,每个提取的文件路径都会输入到该正则表达式中。与 --strip-components 不同,它将删除所有路径信息,而不仅仅是固定数量的组件。

For me the following works the best:

tar xvf some.tar --transform 's?.*/??g'

--transform argument is a replacement regex for sed, to which every extracted filepath is fed. Unlike --strip-components, it will remove all path information, not just fixed number of components.

赠意 2024-09-14 08:31:47

如果您不知道路径中有多少个组件,您可以尝试以下操作:

DIR_TO_PACK=/www/path/
cd $DIR_TO_PACK/..
tar -cf tarname.tar $(basename $DIR_TO_PACK)

If you don't know how many components are in the path, you could try this:

DIR_TO_PACK=/www/path/
cd $DIR_TO_PACK/..
tar -cf tarname.tar $(basename $DIR_TO_PACK)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文