2016-01-07 21 views
-1

我有一些具有完全相同名稱的.tgz文件,我想用uniq名稱將它們全部解壓到一個目錄中。我更傾向於將追加.tgz的來自的文件夾的名稱,如何明確解開tgz文件

original location= /folder1/folder2/2015/04/08/something1.tgz 
original location= /folder1/folder2/2015/04/09/something2.tgz 

的解壓後,我想他們解壓如下

target_folder= 20150408_something1 
target_folder= 20150409_something2 
+0

檢查焦油的聯機幫助頁。特別是'-C'標誌。 –

+0

我已經嘗試了man page,但我無法看到任何東西 – neil

回答

0

something1.tar.gzsomething2.tar.gz不具有相同的名稱。我假設你的意思是他們包含相同的頂層文件夾/文件?

在這種情況下(假設您的文件夾層次結構在所有tarball的路徑中是一致的),您應該可以使用類似的東西。

for arc in /folder1/folder2/2015/04/08/something1.tgz /folder1/folder2/2015/04/09/something2.tgz; do 
    # Get just the filename of the archive. 
    fname=$(basename "$arc") 
    # Strip off the extension from the filename. 
    fname=${fname%.*} 

    # Get just the last three directory components. 
    dname=$(awk -F/'{print $(NF-3)$(NF-2)$(NF-1)}' <<<"$arc") 

    mkdir "${dname}_$fname" || { ret=$?; echo "Could not create directory ${dname}_$fname."; exit $ret; } 
    tar -xvf "$arc" -C "${dname}_$fname" 
done 
+0

多數民衆贊成在偉大,謝謝@ etan-reisner – neil

+0

@neil如果這解決了你的問題,那麼你應該接受它。請參閱[我應該怎麼做,當有人回答我的問題?](http://stackoverflow.com/help/someone-answers)瞭解這個網站的一般工作原理。 –