Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从包含多个文件的gzip中仅提取MaxMind GeoLite2国家/地区数据库的脚本_Linux_Bash_Maxmind_Gunzip - Fatal编程技术网

Linux 从包含多个文件的gzip中仅提取MaxMind GeoLite2国家/地区数据库的脚本

Linux 从包含多个文件的gzip中仅提取MaxMind GeoLite2国家/地区数据库的脚本,linux,bash,maxmind,gunzip,Linux,Bash,Maxmind,Gunzip,最近,MaxMind改变了他们的下载策略,旧的简单格式不再可用。新的文件格式如下:GeoLite2-Country_20191231.tar.gz,其中有一个同名文件夹,包含两个附加文件 虽然有一个选项可以从链接中删除date参数,但下载的文件似乎仍然包含日期 现在,问题是以编程方式从具有该变量名的gzip文件中提取该geolite2country.mmdb 我的旧脚本中存在的解压部分如下: gunzip -c "$1"GeoLite2-Country.mmdb.gz > "$1"GeoL

最近,MaxMind改变了他们的下载策略,旧的简单格式不再可用。新的文件格式如下:
GeoLite2-Country_20191231.tar.gz
,其中有一个同名文件夹,包含两个附加文件

虽然有一个选项可以从链接中删除
date
参数,但下载的文件似乎仍然包含日期

现在,问题是以编程方式从具有该变量名的gzip文件中提取该
geolite2country.mmdb

我的旧脚本中存在的解压部分如下:

gunzip -c "$1"GeoLite2-Country.mmdb.gz > "$1"GeoLite2-Country.mmdb
问题是如何根据新形势修改上述部分。或者,也许有人知道解决同样问题的另一种方法。提前谢谢

文件夹结构:

-+ Geolite2-Country_YYYYMMDD.tar.gz:
 |-+ Geolite2-Country_YYYYMMDD
   |- licence.txt
   |- copyright.txt
   |- Geolite2-Country.mmdb
我需要的是gzip文件当前文件夹中的
Geolite2 Country.mmdb

tar -tf /GeoLite2-City.tar.gz | grep mmdb | xargs tar -xf  /GeoLite2-City.tar.gz --strip-components 1 -C /

只需修复源路径和目标路径

快速且肮脏
GeoLite2-Country.*.mmdb.gz
如果目录中只有其中一个文件,那么它就可以工作。@kaylum我说现在有多个文件,而不仅仅是一个,而且数据库名称与文件夹名称不匹配。然后用
for
循环编写一个shell脚本。
for
循环将迭代
GeoLite2 Country*.mmdb.gz
。然后是
mmdb
文件名。@kaylum谢谢你的想法,但我对循环不太熟悉。我用文件夹结构更新了问题,你能试着写脚本吗?