首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在bash脚本中检查文件名的扩展名?

如何在bash脚本中检查文件名的扩展名?
EN

Stack Overflow用户
提问于 2009-01-02 15:46:04
回答 9查看 274.5K关注 0票数 209

我正在用bash编写一个夜间构建脚本。

一切都很好,除了一个小问题:

代码语言:javascript
复制
#!/bin/bash

for file in "$PATH_TO_SOMEWHERE"; do
      if [ -d $file ]
      then
              # do something directory-ish
      else
              if [ "$file" == "*.txt" ]       #  this is the snag
              then
                     # do something txt-ish
              fi
      fi
done;

我的问题是确定文件扩展名,然后执行相应的操作。我知道问题出在if-语句中,测试txt文件。

如何确定文件是否具有.txt后缀?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-01-02 15:59:50

我想你会说“$file的最后四个字符是否等于.txt?”如果是这样,您可以使用以下命令:

代码语言:javascript
复制
if [ "${file: -4}" == ".txt" ]

请注意,file:-4之间的空格是必需的,因为':-‘修饰符的含义不同。

票数 290
EN

Stack Overflow用户

发布于 2009-01-02 16:30:28

制作

代码语言:javascript
复制
if [ "$file" == "*.txt" ]

如下所示:

代码语言:javascript
复制
if [[ $file == *.txt ]]

也就是说,双括号和无引号。

==的右侧是一个外壳模式。如果需要正则表达式,则使用=~

票数 313
EN

Stack Overflow用户

发布于 2009-01-02 16:10:02

在Unix系统上,你不能确定.txt文件是否真的是一个文本文件。最好的办法是使用"file“。也许可以尝试使用:

代码语言:javascript
复制
file -ib "$file"

然后,您可以使用MIME类型列表来匹配或解析MIME的第一部分,在那里您可以获得"text“、"application”等内容。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/407184

复制
相关文章

相似问题

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