gpt4 book ai didi

file - 在 Unix 中如何确定文件名是否有任何扩展名?

转载 作者:行者123 更新时间:2023-12-01 00:54:04 26 4
gpt4 key购买 nike

我需要查明文件名或目录名是否包含 Unix 中用于 Bourne shell 脚本的任何扩展名。

逻辑将是:

  1. 如果有文件扩展名
  2. 删除扩展
  3. 并使用不带扩展名的文件名

这是我在 SO 中的第一个问题,所以很高兴收到某人的来信。

最佳答案

扩展名的概念并不像传统/玩具 DOS 8+3 文件名中那样严格定义。如果要查找包含点但点不是第一个字符的文件名,请尝试此操作。

case $filename in
[!.]*.*) filename=${filename%.*};;
esac

这将从 $filename 中删除扩展名(根据上面的定义,如果有多个,则从最后一个点开始),如果有一个,否则什么都没有。

如果您不会处理名称可能以点开头的文件,则 case 是多余的,因为如果没有点,赋值也不会触及该值;但是通过这个腰带和吊带示例,您可以轻松地选择您喜欢的方法,以防您需要以某种方式扩展它。

要同时处理有点的文件,只要它不是第一个字符(但如果第一个字符也是点也没关系),请尝试模式 ?*.*

case expression in pattern ) 命令 ;; esac 语法可能看起来很奇怪或可怕,但它用途广泛,非常值得学习。

关于file - 在 Unix 中如何确定文件名是否有任何扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10773812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com