我有一个目录,/Landsat_Data/
其中包含子目录(Landsat_Data/Site1
,Landsat_Data/Site2
,等)。每个子目录包含.tar.gz
文件(例如/Landsat_Data/Site2/LE70930862008092-SC20160107074735.tar.gz
,等),每个.tar.gz
文件包含这样的 tif 或 xml 文件L
-rw-r--r-- espa/ie 29952 2016-01-07 14:57 LT50930861991021ASA00_sr_snow_qa.tif
Run Code Online (Sandbox Code Playgroud)
我想要做的是将每个 tar 文件解压缩到它自己的子目录中(例如Landsat_Data/Site2/LE70930862008092-SC20160107074735/
)。
到目前为止,我在 Landsat_Data 目录中使用此命令行:
find . -type f -name "*.tar.gz" -execdir tar -xvzf {} \;
Run Code Online (Sandbox Code Playgroud)
但是,此命令将所有 tif 和 xml 文件提取到每个子目录(例如Landsat_Data/Site2
)中,而我只想解压缩LE70930862008092-SC20160107074735.tar.gz
以调用LE70930862008092-SC20160107074735
包含所有 tif 和 xml 文件的子子目录。知道如何实现我想要的吗?
尝试
find . -type f -name "*.tar.gz" -execdir tar -xvzf {} \;
Run Code Online (Sandbox Code Playgroud)
根据 man find
-execdir 命令;
-execdir 命令 {} +
与 -exec 类似,但指定的命令是从包含匹配文件的子目录中运行的,该子目录通常不是您开始查找的目录。