Linux 根据文件类型选择文件提取方法-tar.bz2、tar.gz、tar.xz
我有一个小的bash one liner,它从各种来源下载了一个归档文件列表。以下是包含列表的文件示例:Linux 根据文件类型选择文件提取方法-tar.bz2、tar.gz、tar.xz,linux,bash,shell,centos,Linux,Bash,Shell,Centos,我有一个小的bash one liner,它从各种来源下载了一个归档文件列表。以下是包含列表的文件示例: http://this-is-url1/url1.tar.gz http://www.this-is-url2/url2.tar.bz2 http://this-is-url3/url3.tar.bz2 http://this-is-url4/url4.tar.gz http://this-is-the-last-url/url.tar.xz 我使用以下方法下载文件: for i in `
http://this-is-url1/url1.tar.gz
http://www.this-is-url2/url2.tar.bz2
http://this-is-url3/url3.tar.bz2
http://this-is-url4/url4.tar.gz
http://this-is-the-last-url/url.tar.xz
我使用以下方法下载文件:
for i in `cat d_list.txt`; do wget $i; done
其中d_list是上面文本文件的名称。现在,我想使用相同的文件来提取文件。为了提取文件名,我使用了bash和参数扩展,如下所示:
for i in `cat d_list.txt`; do echo "${i##*/}" ; done
但是正如您所看到的,文件压缩类型是不同的。我已经安装了bzip2、xz工具等,所以我的问题是如何为每个文件选择正确的提取方法
注意:我猜,一种方法是提取最后一个字符串,即xz或bz2或gz,然后使用if条件进行比较,然后选择字符串匹配的最佳提取方法。这是正确的还是有更简单的方法来实现这一点?您可以使用以下脚本:
while read -r f; do
wget "$f" -O "${f##*/}"
done < d_list.txt
尝试查看您的tar版本是否具有-a,-自动压缩选项:使用存档后缀确定压缩程序。它将自动处理bz/gz/…而且,正如我在另一篇文章中指出的,您可以使用wget-idu list.txt下载列表中的所有归档文件。