在Perl中是否有一个列出目录中所有文件和目录的函数? 我记得Java有File.list()
这么做吗? Perl中是否有类似的方法?如何使用Perl列出目录中的所有文件?
回答
如果你想获得给定目录的内容,只有它(即无子目录),最好的办法是使用执行opendir/readdir的/ closedir:
opendir my $dir, "/some/path" or die "Cannot open directory: $!";
my @files = readdir $dir;
closedir $dir;
您还可以使用:
my @files = glob($dir . '/*');
但在我看来,它也没有那么好 - 主要是因为水珠是相当复杂的东西(可以自动过滤结果),并用它来获取目录中的所有元素似乎太简单的任务。
在另一方面,如果你需要从所有的目录和子目录的获取内容,基本上一个标准溶液:
use File::Find;
my @content;
find(\&wanted, '/some/path');
do_something_with(@content);
exit;
sub wanted {
push @content, $File::Find::name;
return;
}
这应该这样做。
my $dir = "bla/bla/upload";
opendir DIR,$dir;
my @dir = readdir(DIR);
close DIR;
foreach(@dir){
if (-f $dir . "/" . $_){
print $_," : file\n";
}elsif(-d $dir . "/" . $_){
print $_," : folder\n";
}else{
print $_," : other\n";
}
}
您应该检查执行opendir失败(执行opendir ...还是死亡“的错误信息:$!“)。另外,我错过了什么?什么是Win32 :: GUI :: DoEvents()在这里做? (我没有看到这个问题相关的任何事情。) – Telemachus 2009-06-25 21:33:54
这是我不希望或希望记住的东西经常expresions,应该是很容易做到的,我会用它来创建一个像列表中的函数($目录的最佳方式,“F”);对于目录文件“d”,感谢发布这个 – Geomorillo 2014-03-03 06:41:39
readdir()会这样做。
检查http://perldoc.perl.org/functions/readdir.html
opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
closedir DIR;
use File::Find;
finddepth(\&wanted, '/some/path/to/dir');
sub wanted { print };
它会经过子目录,如果它们存在。
这将列出一切(包括子目录)从目录中你按顺序和属性指定。我花了好几天的时间寻找某件事来做这件事,并且我从这整个讨论中拿出了一些部分,并且把它们放在一起。请享用!!
#!/usr/bin/perl --
print qq~Content-type: text/html\n\n~;
print qq~<font face="arial" size="2">~;
use File::Find;
# find(\&wanted_tom, '/home/thomas/public_html'); # if you want just one website, uncomment this, and comment out the next line
find(\&wanted_tom, '/home');
exit;
sub wanted_tom {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat ($_);
$mode = (stat($_))[2];
$mode = substr(sprintf("%03lo", $mode), -3);
if (-d $File::Find::name) {
print "<br><b>--DIR $File::Find::name --ATTR:$mode</b><br>";
} else {
print "$File::Find::name --ATTR:$mode<br>";
}
return;
}
如果你是像我这样的懒人,你可能会喜欢使用File::Slurp模块。该read_dir函数将读取目录内容到一个数组,消除了点,如果需要前缀的文件与目录的绝对路径
返回my @paths = read_dir('/path/to/dir', prefix => 1) ;
- 1. 列出目录中的所有文件
- 2. 列出目录+子目录中的所有文件和目录
- 3. 如何列出marklogic目录中所有文档的所有URI
- 4. 使用Zend Framework列出S3目录中的所有文件
- 5. 使用Spark列出Hadoop HDFS目录中的所有文件?
- 6. 使用Dot Net Zip列出目录中的所有文件?
- 7. 使用nio.file.DirectoryStream递归列出目录中的所有文件;
- 8. 在目录中列出同一目录中的所有文件使用visual C++
- 9. 如何列出资源目录中的所有文件
- 10. 如何列出当前目录中的所有.txt文件?
- 11. 如何列出目录中的所有文件Silverlight
- 12. Cocos2d-x如何列出资源目录中的所有文件
- 13. 如何列出指定目录中的所有zip文件?
- 14. 如何列出目录中的所有文件
- 15. 如何列出自定义目录中的所有文件
- 16. 如何列出ftp目录中的所有文件夹?
- 17. 阅读Perl中一系列子目录中的所有文件
- 18. 列出目录中的文件和所有子目录
- 19. 列出目录和子目录中的所有jpg文件
- 20. 列出目录中的所有文件和子目录C#
- 21. 列出目录中的所有子目录和文件
- 22. 列出目录中的所有子目录和文件
- 23. 如何使用Perl从目录中的所有文件中提取模式?
- 24. 如何使用Perl获取目录中纯文件的列表?
- 25. 如何列出批处理文件中当前目录的所有父目录
- 26. 如何在php中列出目录及其子目录的所有文件?
- 27. 如何使用C++列出Windows目录中的所有CSV文件?
- 28. 如何使用rsync --list-only源来列出该目录中的所有文件?
- 29. 使用Perl来统计文件或目录中所有文件中所有单词的出现
- 30. 如何列出所有不包含给定文件的目录?
我总是忘记readdir只是返回一个相对文件名列表,而不是整个路径! – 2014-08-04 07:15:07