在linux中搜索文件名中的模式

时间:2013-08-28 00:38:39

标签: linux string search filenames

以下是一些示例文件名:

  

1_0_1_2A34_8_70_1680000_0_0_0.png

     

1_0_1_1_1A2C_1_5A2F16_0_0_0.png

     

1_0_1_3EC_6_601_D7A0000_0_0_0.png

     

1_0_1_152D_7E3_2_11A2F26_0_0_0.png

首先,我试图让linux将文件名识别为由下划线“_”分隔的10列文本。

例如:

  

col1_col2_col3_col4_col5_col6_col7_col8_col9_col10.png

然后我想告诉linux在文件名列的第7列的前3个字符中搜索字符串(例如“11A”)。

我有成千上万的这些文件,如果我定期搜索“11A”,我将获得包含11A但在第4,第5和第4版的文件的匹配。第7栏。

1 个答案:

答案 0 :(得分:2)

这是一个Perl脚本(我们称之为match7th.pl),它将打印出第7个字段与给定模式匹配的任何行(例如11A):

#!/usr/bin/perl -w
use strict;
my $pat = qr/$ARGV[0]/;
while (<STDIN>) {
    my (undef, undef, undef, undef, undef, undef, $seventh) = split /_/;
    print if defined($seventh) && $seventh =~ $pat;
}

像这样运行:

find . -name '*.png' | perl match7th.pl 11A