首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据扩展名识别文件

根据扩展名识别文件
EN

Stack Overflow用户
提问于 2018-04-06 22:53:55
回答 2查看 84关注 0票数 1

我需要识别具有不同扩展名的文件,即使存在多个扩展名的组合。

因此,如果我的cwd有以下文件:

代码语言:javascript
复制
file-1 .zip
file-2 .tar
file-3 .tar.gz
file-4 .gz
file-5 .zip.tar
file-6 .tar.gz
file-7 .gz

我需要告诉bash当扩展(在本例中)是:

  • zip
  • 焦油
  • zip.tar
  • tar.gz
  • gz

因为对于每个扩展,我需要做不同的事情,这意味着如果扩展是.tar (只)或.gz (只),我需要执行某些事情,但是如果扩展是.tar.gz,我需要运行另一个代码段。

示例:如果文件名有.tar扩展名,我需要这样做

代码语言:javascript
复制
# stuff
tar xf filename.tar
# other stuff

如果文件名有.zip.tar扩展,我需要运行更复杂的代码(但代码并不完全依赖于扩展,我唯一的目标是获得文件名的完整扩展(filename.tar.gz应该返回.tar.gz而不是.gz或.tar)。

还有,有什么办法用木瓜吗?

EN

回答 2

Stack Overflow用户

发布于 2018-04-06 22:57:28

使用case

代码语言:javascript
复制
case "$filename" in 
    *.tar.gz) code for .tar.gz ;;
    *.gz) code for .gz ;;
    *.zip.tar) code for .zip.tar ;;
    *.tar) code for .tar ;;
    ...
esac

只需确保将组合的扩展放在它们包含的单个扩展之前,因为case执行匹配的第一个模式的语句。

票数 3
EN

Stack Overflow用户

发布于 2018-04-06 23:01:21

file命令是检测文件类型的一个很好的选项,然后可以编写一个逻辑。

代码语言:javascript
复制
file -i test.*

test.gz:     application/x-gzip; charset=binary
test.tar:    application/x-tar; charset=binary
test.tar.gz: application/x-gzip; charset=binary
test.zip:    application/zip; charset=binary
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49701986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档