如何明确地解压tgz文件

时间:2016-01-07 14:03:45

标签: linux bash shell

我有多个.tgz文件具有完全相同的名称,我想在一个目录中使用uniq名称解压缩它们。我的偏好是附加.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

1 个答案:

答案 0 :(得分: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