如何检查文件是否在Bash中具有带正则表达式的扩展名(任何扩展名)?

莱昂·肯尼迪(Leon S.

我是使用Ubuntu18.04进行Bash脚本编写的新手,它试图查找文件是否具有扩展名(任何扩展名),但我尝试实现的正则表达式无法正常工作。我一直在Perl脚本中使用相同的正则表达式,并且工作正常。但是它在Bash脚本中不起作用。以下是我的Bash代码:

dir="ImageFolder"
fileName=""
for f in "$dir"/*;
do
    fileName="$(basename "$f")"

if [[ $fileName =~ /(.*)?\.(.*)/ ]]
then
    echo $fileName
    echo "Yes it has extension"
fi
done

即使“ ImageFolder”中的文件具有扩展名,它也不会执行这些echo命令。换句话说,“ if”语句未执行。仅当我通过在'!'之前放置符号来反转条件时,它才会执行'$fileName'当我反转条件时:if [[ ! $fileName =~ /(.*)?\.(.*)/ ]]然后执行,但给出了不希望的输出(请参见图片):它显示带有扩展名的文件,并说是的,具有扩展名

但是,当我实际上通过物理地移入文件夹来删除文件扩展名时,它再次执行并说文件扩展名存在(请参阅图片)说“是的,即使我已经删除了扩展名,也有扩展名”

我真的需要这个正则表达式来工作。一些帮助将不胜感激。

magesh:

一旦删除了正则表达式模式周围的“ /”,它就应该起作用。

[[ $fileName =~ (.*)?\.(.*) ]]

参考 有关更多示例,请https://www.tldp.org/LDP/abs/html/bashver3.html#REGEXMATCHREF

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式检查文件是否具有任何扩展名

正则表达式从路径获取带扩展名或不带扩展名的文件名

正则表达式,以允许文件仅具有.txt或没有扩展名

Java文件扩展名正则表达式

正则表达式:省略文件扩展名

正则表达式可将日期附加到带文件扩展名和不带文件扩展名的字符串中

崇高文本正则表达式以查找具有特定扩展名的文件名

如何使用正则表达式获取不带扩展名的文件名

C ++正则表达式模式检查文件扩展名

我需要使用正则表达式检查文件的扩展名

使用正则表达式查找具有完全扩展名的文件(之后没有其他内容)

如何通过扩展名使用正则表达式过滤文件,但排除某些文件?

正则表达式:从 Y 文件夹中查找 X 扩展名的文件

使用正则表达式查找带有参数给出的扩展名的文件

正则表达式-所有不带.html扩展名的PHP文件

Python正则表达式匹配没有文件扩展名的url

如何在JavaScript中使用正则表达式验证文件扩展名

如何使用正则表达式获取文件扩展名?

如何使用正则表达式拆分文件扩展名

如何使用正则表达式匹配不带扩展名的文件名单词?

用于检索HTTP url中的文件扩展名的正则表达式

用于在 bash 中包含日期格式和 .zip 扩展名的备份文件的正则表达式

使用正则表达式编辑扩展名

正则表达式扩展名和语言

域和扩展名的正则表达式无法处理双字扩展名

匹配具有特定扩展名的所有文件名(特定文件名正则表达式除外)

Python正则表达式匹配整个文件名包括文件扩展名

正则表达式,不带扩展名的文件名

正则表达式 - 如果通过则测试扩展名然后测试文件名