我有一個包含文件夾dagens
的文件dagens_130325.tar.gz
。在一個文件夾中,我有數百個這些每日信息。我想將dagens_130325.tar.gz/dagens
解壓到130325
裏面的所有文件。然後130326
等將tar.gz文件夾解壓到文件名的一部分
有沒有辦法做到這一點?
我有一個包含文件夾dagens
的文件dagens_130325.tar.gz
。在一個文件夾中,我有數百個這些每日信息。我想將dagens_130325.tar.gz/dagens
解壓到130325
裏面的所有文件。然後130326
等將tar.gz文件夾解壓到文件名的一部分
有沒有辦法做到這一點?
這是我想出到底
#!/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
不知道這是正確的堆棧哪裏問這樣的問題,但與
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
權限與您的檔案位於同一個文件夾中,並執行它應產生您詢問的結果。
使用
#!/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
仍然不能正常工作,因爲它需要讀取許多文件。 – user2130951
我以爲你想每個文件運行文件。 我會更新代碼,以便您可以像蝙蝠一樣運行。 – LACabeza
太過分了信息,因爲它僅適用於一個文件的解決方案。也許這是不可能的,沒有使用Bash? – user2130951
老實說,不使用'for'循環,因此我不知道如何處理幾個文件。抱歉,我沒有立即理解你的問題。給我5分鐘來審查'for'版本,我會添加到答案 – ThanksForAllTheFish