我只是想获取给定带有通配符的路径的文件名列表。
my $path = "/foo/bar/*/*.txt";
my @file_list = glob($path);
foreach $current_file (@file_list) {
print "\n- $current_file";
}
大多数情况下,这工作得很好,但如果有一个大于 2GB 的文件,在 /foo/bar/* 子路径之一的某个地方,glob 返回一个空数组,没有任何错误或警告。
如果我删除文件文件或添加这样的字符/括号序列:
my $path = "/foo/bar/*[0-9]/*.txt";
或者
my $path = "/foo/bar/*1/*.txt";
然后 glob 再次工作。
更新:
这是一个示例(出于业务政策的考虑,我必须屏蔽路径名):
[root]/foo/bar # ls -lrt
drwxr-xr-x 2 root system 256 Oct 11 2006 lost+found
drwxr-xr-x 2 root system 256 Dec 27 2007 abc***
drwxr-xr-x 2 root system 256 Nov 12 15:32 cde***
-rw-r--r-- 1 root system 2734193149 Nov 15 05:07 archive1.tar.gz
-rw-r--r-- 1 root system 6913743 Nov 16 05:05 archive2.tar.gz
drwxr-xr-x 2 root system 256 Nov 16 10:00 fgh***
[root]/foo/bar # /home/user/test.pl
[root]/foo/bar #
删除 >2GB 文件(或使用“/foo/bar/[acf] / ”而不是“/foo/bar/ / ”进行通配)
[root]/foo/bar # ls -lrt
drwxr-xr-x 2 root system 256 Oct 11 2006 lost+found
drwxr-xr-x 2 root system 256 Dec 27 2007 abc***
drwxr-xr-x 2 root system 256 Nov 12 15:32 cde***
-rw-r--r-- 1 root system 6913743 Nov 16 05:05 archive2.tar.gz
drwxr-xr-x 2 root system 256 Nov 16 10:00 fgh***
[root]/foo/bar # /home/user/test.pl
- /foo/bar/abc***/heapdump.phd.gz
- /foo/bar/cde***/javacore.txt.gz
- /foo/bar/fgh***/stuff.txt
[root]/foo/bar #
有什么建议吗?
我正在使用:Perl 5.8.8 Aix 5.3 文件系统是本地 jfs。