从Linux中的文件夹中解压缩子文件夹

时间:2016-10-12 12:38:44

标签: linux directory tar

我有一个目录/Landsat_Data/,其中包含子目录(Landsat_Data/Site1Landsat_Data/Site2等)。每个子目录包含.tar.gz个文件(例如/Landsat_Data/Site2/LE70930862008092-SC20160107074735.tar.gz等),每个.tar.gz文件包含tif或xml文件,例如thisL

-rw-r--r-- espa/ie  29952 2016-01-07 14:57 LT50930861991021ASA00_sr_snow_qa.tif 

我想要做的是将每个tar文件解压缩到自己的子子目录中(例如Landsat_Data/Site2/LE70930862008092-SC20160107074735/)。

到目前为止,我正在使用此命令行作为Landsat_Data目录:

find . -type f -name "*.tar.gz" -execdir tar -xvzf {} \;

但是,此命令将所有tif和xml文件提取到每个子目录(例如Landsat_Data/Site2),而我只想解压LE70930862008092-SC20160107074735.tar.gz以获得名为{{1}的子子目录其中包含所有tif和xml文件。知道如何实现我的目标吗?

1 个答案:

答案 0 :(得分:0)

您可以在运行tar之前解析文件名并cd到目录中。您可以将一个简单的shell脚本放入/folder中,如下所示:

~/folder$ cat extract-in-dir.sh 
#!/bin/bash
DIRECTORY="${1%/*}"
TARFILE="${1##*/}"

cd $DIRECTORY
tar -xf $TARFILE

然后chmod +x ./extract-in-dir.sh并按照以下方式运行:

find . -type f -name \*tar -exec ./extract-in-dir.sh {} \;