如何排除 tar 的绝对路径?
我正在运行一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您错误地使用了
-C
开关,该开关用于更改目录。所以你需要做的是:或者如果你想打包
/www/path
下的所有内容:你可以多次使用
-C
开关。You are incorrectly using the
-C
switch, which is used for changing directories. So what you need to do is:or if you want to package everything under
/www/path
do:You can use
-C
switch multiple times.如果要删除文件名的前 n 个前导组件,则需要
strip-components
。因此,在您的情况下,在提取时,请执行手册页 有一个
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, doThe man page has a list of
tar
's many options, including this one. Some earlier versions oftar
use--strip-path
for this operation instead.对我来说,以下效果最好:
--transform
参数是 sed 的替换正则表达式,每个提取的文件路径都会输入到该正则表达式中。与--strip-components
不同,它将删除所有路径信息,而不仅仅是固定数量的组件。For me the following works the best:
--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.如果您不知道路径中有多少个组件,您可以尝试以下操作:
If you don't know how many components are in the path, you could try this: