首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用grep和map查找具有.png扩展名的文件名,但输出它们时没有扩展名

使用grep和map查找具有.png扩展名的文件名,但输出它们时没有扩展名
EN

Stack Overflow用户
提问于 2020-10-10 19:08:12
回答 4查看 126关注 0票数 1

使用grepmap,我的Perl脚本将文件名(植物名)返回为"Genus_species.png“。但是,我更喜欢输出这些文件名,而不使用.png扩展名。尽管如此,我仍然希望我的grep/map表达式只查找具有.png扩展名的文件名。我该怎么做?请给我建议。谢谢。

这是我的剧本:

代码语言:javascript
复制
#!/usr/bin/perl
use strict;
use warnings;

my $dir = '/Users/jdm/Desktop/xampp/htdocs/cnc/images/plants';
opendir my $dfh, $dir  or die "Can't open $dir: $!";

my @files = 
    map { s/1\.png\z/.png/r } # Removes "1" from "Genus_species1.png" file names/ also finds "Genus_species.png" file names
    grep { /^[^2-9]*\.png\z/i && /_/ } # Excludes file names with numbers 2-9 such as "Genus_species2-9.png"
    readdir $dfh; # Returns one file name per plant as "Genus_species.png" 

foreach my$file (@files) {
   print "$file\n";
}

这是输出:

代码语言:javascript
复制
Ilex_verticillata.png
Asarum_canadense.png
Ageratina_altissima.png
Lonicera_maackii.png
Chelone_obliqua.png
Acalypha_deamii.png

下面是没有.png扩展的首选输出:

代码语言:javascript
复制
Ilex_verticillata
Asarum_canadense
Ageratina_altissima
Lonicera_maackii
Chelone_obliqua
Acalypha_deamii

同样,我仍然希望只找到带有.png扩展名的文件名,但是要输出没有.png扩展名的文件名。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-10-10 19:19:40

放入最后一个循环:

代码语言:javascript
复制
$file =~s/\.png//;

在印刷之前。

票数 2
EN

Stack Overflow用户

发布于 2020-10-10 19:19:36

您可以使用替换来删除扩展:

代码语言:javascript
复制
foreach my $file (@files) {
   print $file =~ s/\.png$//r, "\n";
}

或者,您可以使用substr

代码语言:javascript
复制
foreach my $file (@files) {
   print substr($file, 0, -4), "\n";
}

或者,您可以使用一个匹配:

代码语言:javascript
复制
foreach my $file (@files) {
   print $file =~ /(.*)\.png$/, "\n";
}
票数 2
EN

Stack Overflow用户

发布于 2020-10-10 22:41:27

使用格罗布简化了问题

代码语言:javascript
复制
use strict;
use warnings;
use feature 'say';

my $dir = '/Users/jdm/Desktop/xampp/htdocs/cnc/images/plants';
my @files = map { s/1|(2-9)|(\.png)//g; $_ } glob("$dir/*.png");

say for @files;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64297220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档