REGEX 文件名 Shellscript 检查

标签 regex linux bash shell unix

我正在尝试使用正则表达式编写一个 bashscript 检查来区分以下文件。我试图在 if 语句中选择 DRLIC_INFO_20170912.out 而不是 DRLIC_INFO_20170912_TEMP.out。 20170912 将是每日时间戳。

输入文件名:

DRLIC_INFO_2017-09-12.out
DRLIC_INFO_2017-09-12_TEMP.out

当前检查:

SEARCH_DRLIC_INFO='DRLIC_INFO'

if [[ $filename == *$SEARCH_DRLIC_INFO* ]]

最佳答案

能否请您尝试关注并告诉我这是否对您有帮助。

filename1="DRLIC_INFO_20170912_TEMP.out"
regex="DRLIC_INFO_[[:digit:]]+_TEMP.out"
if [[ $filename1 =~ $regex ]]; then echo "File named "$filename1 " found."; else echo "File name " $filename1 " not found."; fi

或者如果您想具体说明字符串中应包含 8 位数字的日期,您也可以将上面的正则表达式变量更改为以下。

regex="DRLIC_INFO_[[:digit:]]{8}_TEMP.out

编辑:如果您想使用您所显示的 SEARCH_DRLIC_INFO 变量,您可以尝试执行以下操作,然后让我知道。

SEARCH_DRLIC_INFO="DRLIC_INFO"
filename1=$SEARCH_DRLIC_INFO"_20170912_TEMP.out"
regex="DRLIC_INFO_[[:digit:]]{8}_TEMP.out"
if [[ $filename1 =~ $regex ]]; then echo "File named "$filename1 " found."; else echo "File name " $filename1 " not found."; fi

关于REGEX 文件名 Shellscript 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46181240/

相关文章:

数字后跟点 (.) 的正则表达式

Linux 文件和进程级 I/O 性能指标

java - 使用 ProcessBuilder 停止从 Java 扫描树莓派中的 BLE 加密狗

BASH:查找并重命名文件和目录

regex - emacs 主要模式为正则表达式之前的行定义字体锁定

regex - 为什么在使用正先行 (?=...) 时我对 regexp_matches 函数的响应为空

c - 未读取 uart 缓冲区

linux - 检查二进制文件是否使用 "-static"编译

linux - 不允许在 bash 脚本的 getopts 中使用多个选项

带有\w 的 Python 正则表达式不起作用