我有一个目录/Landsat_Data/
,其中包含子目录(Landsat_Data/Site1
,Landsat_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文件。知道如何实现我的目标吗?
答案 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 {} \;