在untar tgz文件后重命名目录

时间:2013-03-21 13:09:57

标签: bash shell gzip tar

我有一堆* .tgz文件,当我解开它们时,目录名称与tgz文件的名称不同。示例:我有ab.tgz文件并且它更改为类似2012_test_ab的内容,我感觉这发生了,因为在压缩文件期间必须重命名此压缩文件位于父目录等中。

但我想要做的是将目录重命名为文件的原始名称。

我在终端上运行了一行脚本,但是如何重命名?

for i in *.tgz; do tar xvf $i -C ../stats/; done

如何修改此命令以重命名解压缩的目录。

示例:当我解压缩ab.tgz时,它被提取到目录名是2013_03_12_18_26_ab和该目录中的文件,但我想要做的是将目录名保持为ab而不是{{1} }

我希望2013_03_12_18_26_ab将摘录提取到ab.tgz

2 个答案:

答案 0 :(得分:1)

这样的事可能有用。虽然现在还早,所以我的语法可能有点过时了。

for i in *.tgz
do 
NEWDIR=`tar -tf $i | head -1 | cut -d/ -f2 | cut -d_ -f6` 
mkdir ../stats/$NEWDIR 
tar xvf $i -C ../stats/$NEWDIR/ 
done

for i in *.tgz; do NEWDIR=`tar -tf $i | head -1 | cut -d/ -f2 | cut -d_ -f6`; mkdir ../stats/$NEWDIR; tar xvf $i -C ../stats/$NEWDIR/; done

答案 1 :(得分:1)

假设所有tar档案以.tgz扩展名结尾,原始文件名中可能有多个点,那么:

for i in *.tgz; do tname=$(echo $i | sed -e 's/.tgz//') ; tar xvf $i -C ../stats/$tname; done