解压缩 tar.gz 并为每个文件名附加一个后缀
Uncompress tar.gz with appending a suffix to each files name
我想解压缩 tar.gz,并为每个文件名附加一个后缀。因此,例如 abc.tar.gz 包含文件 'first' 和 'second',因此,在提取后,如果我想附加后缀 '.append',则每个文件的文件名应为 'first.append' 和 'second.append'。有命令或方法吗?
注意:名称为 'first' 和 'second' 的文件已经存在,我想在不影响现有文件的情况下解压缩。
我能想到的一件事是在临时目录中解压缩,然后一个一个地复制所有文件。但是,如果可能的话,我想一次完成,这样可以节省时间。
提前致谢。
试试这个:
#!/bin/bash
COMPRESS_F=abc.tar.gz
if [ $# -ne 0 ]; then
COMPRESS_F=
fi
for i in `tar -tf "$COMPRESS_F"`; do
if [ -f $i ]; then
echo "mv ${i} ${i}.orig"
mv ${i} ${i}.orig
fi
done
for i in `tar -xvzf "$COMPRESS_F"`; do
echo "mv ${i} ${i}.append"
mv ${i} ${i}.append
if [ -f ${i}.orig ]; then
echo "mv ${i}.orig ${i};"
mv ${i}.orig ${i};
fi
done
得到解决方案,我们可以使用tar命令的'--transform'选项来实现,如下所示:
tar -(x/c)vf archive.tar --transform 's,/abc$,/abc.append,'
这会将所有 abc 文件转换为 abc.append。
我想解压缩 tar.gz,并为每个文件名附加一个后缀。因此,例如 abc.tar.gz 包含文件 'first' 和 'second',因此,在提取后,如果我想附加后缀 '.append',则每个文件的文件名应为 'first.append' 和 'second.append'。有命令或方法吗?
注意:名称为 'first' 和 'second' 的文件已经存在,我想在不影响现有文件的情况下解压缩。
我能想到的一件事是在临时目录中解压缩,然后一个一个地复制所有文件。但是,如果可能的话,我想一次完成,这样可以节省时间。
提前致谢。
试试这个:
#!/bin/bash
COMPRESS_F=abc.tar.gz
if [ $# -ne 0 ]; then
COMPRESS_F=
fi
for i in `tar -tf "$COMPRESS_F"`; do
if [ -f $i ]; then
echo "mv ${i} ${i}.orig"
mv ${i} ${i}.orig
fi
done
for i in `tar -xvzf "$COMPRESS_F"`; do
echo "mv ${i} ${i}.append"
mv ${i} ${i}.append
if [ -f ${i}.orig ]; then
echo "mv ${i}.orig ${i};"
mv ${i}.orig ${i};
fi
done
得到解决方案,我们可以使用tar命令的'--transform'选项来实现,如下所示:
tar -(x/c)vf archive.tar --transform 's,/abc$,/abc.append,'
这会将所有 abc 文件转换为 abc.append。