我有一堆* .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
答案 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