regex - 用于处理目录的 Bash 脚本 (REGEX)

标签 regex linux bash

我似乎无法让我的 bash 脚本中的正则表达式工作:

#!/bin/bash
cd /var/lib/gitolite/repositories
for D in *; do
    if [ -d "${D}" ]; then
        if [["${D}" = [^[0-9A-Za-z\-_].git$] ]]; then
            echo "${D}"
        fi
    fi
done

可能的目录名称:

test.git
test-admin12.git
test_admin.git
test_admin.git.bkp (these are the folders I DON'T want)

我不想启动辅助进程,例如:sed 或 grep 或 ls

最佳答案

代替:

if [["${D}" = [^[0-9A-Za-z\-_].git$] ]]; then
   echo "${D}"
fi

以正确的语法和正确的正则表达式使用此条件:

[[ "${D}" =~ ^[0-9A-Za-z_-]+\.git$ ]] && echo "${D}"

关于regex - 用于处理目录的 Bash 脚本 (REGEX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357365/

相关文章:

python - 由于目录权限无法安装 python egg

linux - 将带引号的字符串传递给 ssh

bash - 如何使用 curl 将收到的 cookie 信息打印到标准输出?

regex - Logstash grok 链条件过滤器

javascript - 仅当不是 html 时才转换为 anchor

linux - 将 Bjam 与 Eclipse CDT 集成?

linux - 如何在另一个进程中调用函数

javascript - 正则表达式查找字符串中的 URL

regex - 需要帮助拆分此名称字符串(名字和姓氏对,以逗号和 "and"分隔)

git - 如何编写有关提交的 .log 文件