正则表达式匹配文件名



我知道这对你们中的一些人来说听起来很愚蠢,但我不擅长正则表达式解决方案。我在其他人编写的函数中遇到了以下表达式,但无法弄清楚他/她在做什么。

正则表达式 1

[ ! -d ${2%/*}/ ]

正则表达式 2

cmp -s $2 ${2##*/}

您可以猜到,这些正则表达式评估正在脚本中使用,执行文件更新并移动它们。我想知道的含义

${2%/*}/ 

${2##*/}

让我们举一个例子来更好地理解:

s='abc/def/foo'
echo "${s%/*}/"
abc/def/
echo "${s##*/}"
foo
  1. 第一个表达式是丢弃输入中最后一个/之后的文本。
  2. 第二个表达式是丢弃输入中最后一个/之前的所有文本。

您可以在man bash中看到更多详细信息:

  • ##*/ 用于匹配从输入字符串开始/之前的最长字符串。
  • %/*用于匹配从输入末尾/后的文本。

相关内容

  • 没有找到相关文章

最新更新