我有一个目录 /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
我想做的是将每个 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
有一个名为 LE70930862008092-SC20160107074735
的子目录,其中包含所有的 tif 和 xml 文件。知道如何实现我想要的吗?
最佳答案
在运行 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
并像这样运行它:
找到 . -type f -name\*tar -exec ./extract-in-dir.sh {}\;
关于linux - 从 linux 中的文件夹解压子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998830/