Linux 从包含多个文件的gzip中仅提取MaxMind GeoLite2国家/地区数据库的脚本
最近,MaxMind改变了他们的下载策略,旧的简单格式不再可用。新的文件格式如下: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
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谢谢你的想法,但我对循环不太熟悉。我用文件夹结构更新了问题,你能试着写脚本吗?