站长网 Linux Linux 上轻松文件提取

Linux 上轻松文件提取

它们有很多格式,从 .gz 到 .tbz2,这些文件的命名方式都各有一些不同。当然,你可以记住所有从存档中提取文件的各种命令以及它们的选项,但是你也可以将所有经验保存到脚本中,而不再担心细节。 在本文中,我们将一系列提取命令组合成一个脚本,它会调用

它们有很多格式,从 .gz 到 .tbz2,这些文件的命名方式都各有一些不同。当然,你可以记住所有从存档中提取文件的各种命令以及它们的选项,但是你也可以将所有经验保存到脚本中,而不再担心细节。

在本文中,我们将一系列提取命令组合成一个脚本,它会调用适当的命令根据文档名提取文件的内容。该脚本首先以一些命令来验证是否已经提供了一个文件名作为参数,或要求运行脚本的人提供文件名。

#!/bin/bash 

if [ $# -eq 0 ]; then 

    echo -n "filename> " 

    read filename 

else 

    filename=$1 

fi 

if [ ! -f "$filename" ]; then 

    echo "No such file: $filename" 

    exit $? 

fi 

了解了么?如果未提供任何参数,脚本将提示输入文件名,如果存在则使用它。然后,它验证文件是否实际存在。如果不是,那么脚本退出。

下一步是使用 bash 的 case 语句根据存档文件的名称调用适当的提取命令。对于其中某些文件类型(例如 .bz2),也可以使用除 tar 之外的其它命令,但是对于每种文件命名约定,我们仅包含一个提取命令。因此,这是带有各种存档文件名的 case 语句:

 case $filename in 

    *.tar)      tar xf $filename;; 

    *.tar.bz2)  tar xjf $filename;; 

    *.tbz)      tar xjf $filename;; 

    *.tbz2)     tar xjf $filename;; 

    *.tgz)      tar xzf $filename;; 

    *.tar.gz)   tar xzf $filename;; 

    *.gz)       gunzip $filename;; 

    *.bz2)      bunzip2 $filename;; 

    *.zip)      unzip $filename;; 

    *.Z)        uncompress $filename;; 

    *)          echo "No extract option for $filename" 

esac 

如果提供给脚本的文件扩展名与脚本已知的扩展名都不匹配,那么会发出 “No extract option for $filename” 的消息。如果缺少你使用的任何存档类型,只需将它们与所需的提取命令一起添加即可。

将 bash 头添加到脚本顶部,使其可执行,然后就可以开始了。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/server/linux/2021/0523/4207.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部