我想检查文件名是否匹配特定模式

Hanzhao Lu

我想检查文件名是否匹配以字母数字字符([a-zA-Z0-9])开头的特定模式,并且仅包含字母数字字符以及“。”,“-”和“ _”字符。

fileNamePattern="^[a-zA-Z0-9]+[\.-_]*"
if [[ $i(file from input) == $fileNamePattern ]]
      then
         echo "success"
      else
         echo "fail"
fi

这是我尝试解决的方法,但是在“ [[”之后没有告诉我意外的运算符,请帮助我。

库萨兰达

如果将扩展的正则表达式转换为球形模式,则可以使用case ... esacindash来检查变量的值是否与之匹配,而无需进行以下操作grep

case $name in
    [a-zA-Z0-9]*[._-]*)
        echo success
        ;;
    *)
        echo failure
esac

该模式将匹配一个以任何匹配的字符开头的值,[a-zA-Z0-9]然后还包含点,下划线或破折号(即使您的表达式允许存在最后一组字符,我也想检查该值)在字符串中)。请注意,我已经将破折号移到了括号表达式的末尾,因为在._.-_之间使用范围几乎没有意义。我也假设你希望匹配字面的反斜杠。如果您这样做,请添加\\到第二个括号表达式中。

嗯,这看起来不错,但它并没有你想要的东西因为这样做*仍然可以匹配一个非字母数字字符,是不是._-

让我们尝试颠倒测试的意义,所以我们测试一下失败的名称

case $name in
    *[![:alnum:]_.-]*)
        echo failure
        ;;
    *)
        echo success
esac

现在,我们检测到包含我们知道我们不需要的字符的值。但是,我们尚未正确测试该值是否以字母数字字符开头...

case $name in
    *[![:alnum:]_.-]*)
        echo 'failure (contains wrong characters)'
        ;;
    *)
        case $name in
            [[:alnum:]]*)
                echo success
                ;;
            *)
                echo 'failure (does not start with alnum)'
        esac
esac

这最多可以进行两个测试,首先检查该值是否包含我们不想要的字符,然后(如果没有)检查它是否以正确的字符类型开头。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查文件名是否符合模式?

来自分类Dev

查找具有特定匹配模式的重复文件名

来自分类Dev

如何搜索与特定模式匹配的文件名的特定扩展名

来自分类Dev

rm按模式匹配文件名

来自分类Dev

模式与R中的文件名匹配

来自分类Dev

检查文件夹中的任何文件是否包含模式,然后返回文件名

来自分类Dev

使用python中的模式或正则表达式匹配检查文件名

来自分类Dev

如何以编程方式判断文件名是否与Shell Glob模式匹配?

来自分类Dev

如何以编程方式判断文件名是否与Shell Glob模式匹配?

来自分类Dev

如何检查文件名是否与Shell脚本中的正则表达式匹配

来自分类Dev

打印与模式匹配的文件的文件名和行号

来自分类Dev

如何修改我的VBA代码以检查文件名是否已被占用?

来自分类Dev

重命名与模式匹配的文件名部分

来自分类Dev

查找与模式匹配的所有文件名

来自分类Dev

仅使用模式匹配提取文件名

来自分类Dev

重击以匹配文件名中的模式,然后添加/编辑

来自分类Dev

awk / sed文件名添加到模式匹配

来自分类Dev

linux一线,显示与模式匹配的文件名

来自分类Dev

ripgrep:仅打印匹配模式的文件名

来自分类Dev

如果文件名与模式不匹配,请打印

来自分类Dev

匹配文件名通配模式时使用交替

来自分类Dev

使用通配符检查文件名搜索模式中的冲突

来自分类Dev

检查文件是否包含特定模式?

来自分类Dev

如何检查目录中的音频文件是否与数据库中存储的文件名匹配

来自分类Dev

根据文件名中的特定模式移动文件

来自分类Dev

我想剪切所有文件名

来自分类Dev

检查文件名的格式是否为<文件名>。<文件内容的md5sum>

来自分类Dev

将grep管道插入sed,替换内联;但我想sed打印文件名并更改行。是否有可能?

来自分类Dev

Windows文件名-如何检查文件名是否有效?

Related 相关文章

  1. 1

    如何检查文件名是否符合模式?

  2. 2

    查找具有特定匹配模式的重复文件名

  3. 3

    如何搜索与特定模式匹配的文件名的特定扩展名

  4. 4

    rm按模式匹配文件名

  5. 5

    模式与R中的文件名匹配

  6. 6

    检查文件夹中的任何文件是否包含模式,然后返回文件名

  7. 7

    使用python中的模式或正则表达式匹配检查文件名

  8. 8

    如何以编程方式判断文件名是否与Shell Glob模式匹配?

  9. 9

    如何以编程方式判断文件名是否与Shell Glob模式匹配?

  10. 10

    如何检查文件名是否与Shell脚本中的正则表达式匹配

  11. 11

    打印与模式匹配的文件的文件名和行号

  12. 12

    如何修改我的VBA代码以检查文件名是否已被占用?

  13. 13

    重命名与模式匹配的文件名部分

  14. 14

    查找与模式匹配的所有文件名

  15. 15

    仅使用模式匹配提取文件名

  16. 16

    重击以匹配文件名中的模式,然后添加/编辑

  17. 17

    awk / sed文件名添加到模式匹配

  18. 18

    linux一线,显示与模式匹配的文件名

  19. 19

    ripgrep:仅打印匹配模式的文件名

  20. 20

    如果文件名与模式不匹配,请打印

  21. 21

    匹配文件名通配模式时使用交替

  22. 22

    使用通配符检查文件名搜索模式中的冲突

  23. 23

    检查文件是否包含特定模式?

  24. 24

    如何检查目录中的音频文件是否与数据库中存储的文件名匹配

  25. 25

    根据文件名中的特定模式移动文件

  26. 26

    我想剪切所有文件名

  27. 27

    检查文件名的格式是否为<文件名>。<文件内容的md5sum>

  28. 28

    将grep管道插入sed,替换内联;但我想sed打印文件名并更改行。是否有可能?

  29. 29

    Windows文件名-如何检查文件名是否有效?

热门标签

归档