如何在 `if` 子句中检查某个文件的名称是否与某些模式匹配(例如,其中包含“SSS”)?

如何在 `if` 子句中检查某个文件的名称是否与某些模式匹配(例如,其中包含“SSS”)?

如何检查某个文件的名称是否与if子句中的某个模式匹配(例如,其中包含“SSS”)?我的变体似乎不起作用(它始终为 false)。

for f in B/* ; do
    if [ $f = .*SSS.* ] ; then
#    if [ -f $f ] -and -regex ".*SSS.*"; then
        echo $f
    fi
done

答案1

您需要双括号,并且不需要“。” (Shell 通配符不需要 sed 正则表达式)

for f in B/* ; do
    if [[ $f = *SSS* ]] ; then
        echo $f
    fi
done

谷歌给你 https://stackoverflow.com/questions/2348379/use-regular-expression-in-if-condition-in-bash

相关内容