Regex 匹配bash脚本中的单词模式
我有很多pdf文件都有这种模式: 我需要检查一个文件是否有这种模式。我试过这个:Regex 匹配bash脚本中的单词模式,regex,string,bash,shell,Regex,String,Bash,Shell,我有很多pdf文件都有这种模式: 我需要检查一个文件是否有这种模式。我试过这个: pattern = "TN_[0-9]{6}.pdf" for file in *.pdf do if [[ "$file" =~ $pattern ]]; then done 但它给了我 [[:找不到 如果我没有弄错您的问题,您需要打印文件名或获取文件名为TN_u[0-6]6次.pdf,然后您可以尝试以下操作 ls -ltr TN_[0-9][0-9][0-9][0-9][0-9][0-9].p
pattern = "TN_[0-9]{6}.pdf"
for file in *.pdf
do
if [[ "$file" =~ $pattern ]];
then
done
但它给了我
[[:找不到
如果我没有弄错您的问题,您需要打印文件名或获取文件名为
TN_u[0-6]6次.pdf
,然后您可以尝试以下操作
ls -ltr TN_[0-9][0-9][0-9][0-9][0-9][0-9].pdf
OR
ls TN_[0-9][0-9][0-9][0-9][0-9][0-9].pdf
或使用:
ls -1 TN* | grep -E 'TN_[0-9]{6}.pdf'
不知何故,
{6}
无法使用ls
命令。将pattern=“TN[0-9]{6}.pdf”
修改为pattern=“TN[0-9]{6}.pdf”
。否则模式将被解释为命令。为什么重复[0-9]与使用{6}命令不同六倍?@UnbarrableLightness,我试过了,但它对我的盒子不起作用,只检查一下,就会发布它。出于好奇,我问,如果这两种模式在bash中不同,我会感到惊讶。事实上,我已经试过“在TN_[0-9]{6}.pdf中保存文件”,但在TN_[0-9]时不起作用六次work@UnbearableLightnessshell glob与regex不同。您不能使用像{6}
这样的构造(至少在bash
中)。从这个错误消息中,我可以断定您没有运行bash。是的,但我在运行bash之后传递给了bash。您可以验证一下,您正在运行bash吗?您还可以发布完整的错误消息行吗?如果是bash,在这种情况下,错误消息也会显示为“bash”。我在使用bashWell之后,在使用sh运行脚本时遇到了错误,当然是这样当你使用bash构造而不在bash下运行它时,你会遇到一个错误!如果这个问题不适用于bash,那么为什么要把“bash”作为你帖子的标签呢?