我正在尝试立即匹配文件以更改文件名称
tempString="hi"
end="_hi.pdf"
for c in *.pdf; do
tempString="$(echo ${c})"
if [[ $tempString =~ $AA[0-9][0-9][0-9]\.pdf$ ]]
then
echo "inside if"
tempString="$(echo $tempString | tr -d ' ')"
tempString=${tempString%.pdf}
mv "%c" "$monthyear$tempString$end"
fi
done
tempString设置为“AA 111.pdf”
我需要它匹配AA 111.pdf
而不是AA 111.pdf
(一个空格而不是两个空格)。我只想让它在AA和111之间恰好匹配一个空格。
它保持匹配这两个例子或两者都不匹配。我试过\ s,[\ s],[:space:],[[:space:]]等等。
我试过在各处查找,但无济于事。有人可以帮助我吗?
答案 0 :(得分:1)
以下内容将匹配一个(仅限一个)空格名称,例如AA 111.pdf
:
if [[ "$tempString" =~ ^AA" "[0-9][0-9][0-9]\.pdf$ ]];
诀窍在于正则表达式中的quote your spaces。
更新:以下代码忽略了两个(以及更多)空格示例:
tempString="AA 111.pdf"
if [[ "$tempString" =~ ^AA" "[0-9][0-9][0-9]\.pdf$ ]]; then
echo "yes"
else
echo "no"
fi
这会打印no
单线版:
tempString="AA 111.pdf"; if [[ "$tempString" =~ ^AA" "[0-9][0-9][0-9]\.pdf$ ]]; then echo "yes"; else echo "no"; fi
答案 1 :(得分:0)
试试这个正则表达式[a-zA-z]+ \d+
如果您想要space
之前的任何字符,请使用此\w+ \d+
如果您想要space
之前和之后的任何字符,请使用此\w+ \w+
如果您想考虑文件扩展名,可以添加\.pdf$
在上面
regex
的末尾