将tar.gz文件夹解压缩到文件名的一部分

时间:2014-03-06 10:09:27

标签: tar gz

我有一个包含文件夹dagens_130325.tar.gz的文件dagens。在一个文件夹中,我有数百个这样的日常信息。我想将dagens_130325.tar.gz/dagens解压缩到130325,其中包含所有文件。然后是130326等。

有办法吗?

3 个答案:

答案 0 :(得分:0)

不确定这是一个正确的堆栈,在哪里提出这类问题,但请尝试使用

tar -zxvf dagens_130325.tar.gz -C /tmp/130325 dagens

这样,归档dagens的文件夹dagens_130325.tar.gz将被提取到/tmp/130325中。但请注意,目标文件夹必须存在,否则命令将失败

因此,假设您有dagens_1.tar.gzdagens_2.tar.gz...形式的4个档案,您可以编写包含

extract.sh文件
#!/bin/bash

for i in {1..4}
do
   mkdir /tmp/$i
   FILE="dagens_$i.tar.gz"
   tar -zxvf $FILE -C /tmp/$i dagens
done

将此文件设为execute权限,与您的档案位于同一文件夹中并执行该文件应生成您提出的结果。

答案 1 :(得分:0)

使用

#!/bin/bash
for file in dagens_*.tar.gz
do
    from=${file%_*} #removes chars after _
    to=${file#*_}   #removes chars before _
    to=${to%.t*}    #removes chars after .t (.tar.gz)
    tar -zxf $file --show-transformed --transform "s/$from/$to/"
done

答案 2 :(得分:0)

这是我最终提出的解决方案

#!/bin/bash
search_dir=/yourdir/with/tar.gz
for entry in "$search_dir"/*.tar.gz
do
  substring=$(basename "$entry")
  echo $substring
  sub2=${substring:7:6}
  tar -xvzf $substring
  rm -rf $sub2
  mv dagens $sub2
done