【发布时间】:2022-10-14 00:25:34
【问题描述】:
我正在基于 Linux 的 Debian 环境(确切地说是 Proxmox 服务器)上工作,并且正在编写一个 perl 脚本。
我的问题是:我有一个文件夹,里面有一些文件,这个文件夹中的每个文件都有一个数字作为名称(例如:100、501、102 ...)。可能的最小数字是 100,最大数字没有限制。
我希望我的脚本只返回名称在 100 到 500 之间的文件。 所以,我写这个:
system(ls /the/path/to/my/files | grep -E "^[1-4][0-9]{2}|5[0]{2}");
我认为我的正则表达式和命令很好,因为当我在终端中输入它时,它是有效的。 但是一旦我执行我的脚本,我就会收到这些错误消息:
String found where operator expected at backupsrvproxmox.pl line 3, near "E "^[1-4][0-9]{2}|5[0]{2}""
(Do you need to predeclare E?)
Unknown regexp modifier "/b" at backupsrvproxmox.pl line 3, at end of line
syntax error at backupsrvproxmox.pl line 3, near "E "^[1-4][0-9]{2}|5[0]{2}""
Execution of backupsrvproxmox.pl aborted due to compilation errors.
我也尝试过 egrep 但仍然无法正常工作。
我不明白为什么错误消息是关于 /b 修饰符的,因为我只使用整数而不使用字符串。
所以,任何帮助都会很好!
【问题讨论】:
-
您的文件名是否以您要查找的数字开头?例如。
100_bears_in_the_woods.txt还是5000000_ways_to_cook_lizards.doc?