我有一个包含文件夹dagens_130325.tar.gz
的文件dagens
。在一个文件夹中,我有数百个这样的日常信息。我想将dagens_130325.tar.gz/dagens
解压缩到130325
,其中包含所有文件。然后是130326
等。
有办法吗?
答案 0 :(得分:0)
不确定这是一个正确的堆栈,在哪里提出这类问题,但请尝试使用
tar -zxvf dagens_130325.tar.gz -C /tmp/130325 dagens
这样,归档dagens
的文件夹dagens_130325.tar.gz
将被提取到/tmp/130325
中。但请注意,目标文件夹必须存在,否则命令将失败
因此,假设您有dagens_1.tar.gz
,dagens_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