tar:从成员名称“不重复的”中删除开头的“ /”

问题描述 投票:0回答:2
#!/bin/bash

source="/home/user/work/tar/deneme"
source2="/home/user/work/tar/deneme1"
for i in {1..5}
do
        tar -czvf $source2/$i/$i.tar.gz $source/$i/
done

我收到此错误消息。

[tar: Removing leading /'来自成员名称`

这是我的脚本和错误。这里有很多问题,但是我的问题没有解决。我运行脚本而不是脚本创建.tar.gz文件。但是,如果我使用tar -xzvf 1.tar.gz此命令解压缩,则我的文件将以完整路径创建,例如home/user/work/tar/deneme/1/1-1.txt

你有什么想法吗?

我尝试了一些方法。例如Find /SED to convert absolute path to relative path within a single line tar statement for crontabhttps://unix.stackexchange.com/questions/59243/tar-removing-leading-from-member-names/59244

linux tar
2个回答
0
投票

这是因为GNU tar删除了前导/(默认情况下)。为了避免这种情况,您可以通过以下方式重写脚本:

#!/bin/bash
cd /home/user/work/tar
source="deneme"
source2="deneme1"
for i in {1..5}
do
         mkdir -p ${source2}/${i}
        tar -czvf ${source2}/${i}/${i}.tar.gz ${source}/${i}/
done

0
投票

谢谢您的所有评论和回答。

我找到了解决方案。我更改一些代码。里面是for循环

mkdir $source2/$i
cd $source/
tar -czvf $source2/$i/$i.tar.gz $i/*
© www.soinside.com 2019 - 2024. All rights reserved.