我刚刚开始学习 Perl,在使用grep函数时遇到了困难。具体来说,我想排除名称中包含数字 0-9 的文件名,但只输出那些扩展名为 .png 的文件。我已经想出了如何排除带有数字的文件名,但我需要有关如何仅包含扩展名为 .png 的文件的帮助。
这是我的 Perl 脚本:
#!/usr/bin/perl
my $dir = '/Users/jdm/Desktop/xampp/htdocs/cnc/images/plants';
opendir(DIR, $dir);
@files = grep (!/[1-9]/,readdir(DIR));
closedir(DIR);
foreach $file (@files) {
print "$file\n";
}
这是输出:
Packera_glabellus.png
Leucojum_aestivum.png
Reynoutria_japonica.png
Agalinis_purpurea.png
.DS_Store
如您所见,“.DS_Store”没有 .png 扩展名。请建议一个只输出带有 .png 扩展名的未编号文件名的grep表达式。谢谢。
如果要排除名称中包含任何数字的文件,请将该grep
行修改为:
@files = grep (/^\D*\.png\z/,readdir(DIR));
这仅返回以任何(或零)非数字字符开头且后跟.png
结尾的文件名。
如果要排除名称中仅包含 1-9 的文件,请更改正则表达式:
@files = grep (/^[^1-9]*\.png\z/,readdir(DIR));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句