linux - 解压缩 tar.gz 并为每个文件名 append 一个后缀

标签 linux append filenames tar

我想解压缩一个 tar.gz,并为每个文件名 append 一个后缀。因此,例如 abc.tar.gz 包含文件“first”和“second”,因此,在提取后,如果我想 append 后缀“.append”,则每个文件的文件名应为“first.append”和“second” 。 append '。有没有命令或方法?

注意:名称为“first”和“second”的文件已经存在,我想在不影响现有文件的情况下解压缩。

我能想到的一件事是在临时目录中解压缩,然后一个一个地复制所有文件。但是,如果可能的话,我想一次性完成,这样可以节省时间。

提前致谢。

最佳答案

试试这个:

#!/bin/bash
COMPRESS_F=abc.tar.gz
if [ $# -ne 0 ]; then
        COMPRESS_F=$1
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

关于linux - 解压缩 tar.gz 并为每个文件名 append 一个后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29815173/

相关文章:

c++ - 在C++中将多个字符 append 到字符串

python - 在 python 中命名类和命名它们的文件之间的关联(约定?)

linux - 验证文件路径

c++ - std::cin 适用于少量行,但不适用于较大行

c++ - 创建自己的线程的 native 共享库可以(应该吗?)支持退出 'without warning' 的使用进程?

linux - 向 BSD 内核添加无堆栈线程?

无法将字符添加到分配给 ""的字符指针

c - 链接器或加载器如何处理共享库的损坏软链接(soft link)?

java - 如何打印所有包HTTP

append 类上的 jquerytoggleClass