2014-03-06 42 views
0

我有一個包含文件夾dagens的文件dagens_130325.tar.gz。在一個文件夾中,我有數百個這些每日信息。我想將dagens_130325.tar.gz/dagens解壓到130325裏面的所有文件。然後130326將tar.gz文件夾解壓到文件名的一部分

有沒有辦法做到這一點?

回答

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 
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權限與您的檔案位於同一個文件夾中,並執行它應產生您詢問的結果。

+0

太過分了信息,因爲它僅適用於一個文件的解決方案。也許這是不可能的,沒有使用Bash? – user2130951

+0

老實說,不使用'for'循環,因此我不知道如何處理幾個文件。抱歉,我沒有立即理解你的問題。給我5分鐘來審查'for'版本,我會添加到答案 – ThanksForAllTheFish

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 
+0

仍然不能正常工作,因爲它需要讀取許多文件。 – user2130951

+0

我以爲你想每個文件運行文件。 我會更新代碼,以便您可以像蝙蝠一樣運行。 – LACabeza

相關問題