在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. 如何列出marklogic目录中所有文档的所有URI
- 3. 使用Dot Net Zip列出目录中的所有文件?
- 4. 使用Zend Framework列出S3目录中的所有文件
- 5. 在目录中列出同一目录中的所有文件使用visual C++
- 6. 如何列出目录中的所有文件Silverlight
- 7. 如何列出目录中的所有文件
- 8. Cocos2d-x如何列出资源目录中的所有文件
- 9. 阅读Perl中一系列子目录中的所有文件
- 10. 列出目录和子目录中的所有jpg文件
- 11. 列出目录中的所有文件和子目录C#
- 12. 列出目录中的文件和所有子目录
- 13. 如何使用Perl从目录中的所有文件中提取模式?
- 14. 如何使用Perl获取目录中纯文件的列表?
- 15. 如何列出批处理文件中当前目录的所有父目录
- 16. 如何在php中列出目录及其子目录的所有文件?
- 17. 使用Perl来统计文件或目录中所有文件中所有单词的出现
- 18. 如何列出所有子目录中的目录
- 19. 如何使用java列出所有打开的文件和目录?
- 20. 使用外部目标列出Libgdx目录中的所有文件
- 21. 如何递归列出所有文件和目录
- 22. Perl脚本列出所有文件
- 23. 可以在目录中列出文件,但想要列出所有目录中的文件
- 24. 如何在Mac终端中列出文件或目录中给定目录的所有文件
- 25. 如何使用windows批处理文件列出所有空目录?
- 26. 列出我的目录中的所有文件夹visual basic
- 27. 如何列出我的项目目录中的所有字体
- 28. 如何使用globstar复制目录中的所有文件?
- 29. 如何使用Elixir编译目录中的所有SASS文件?
- 30. 如何使用Windows XP批处理脚本列出所有子目录中的所有隐藏文件?
我总是忘记readdir只是返回一个相对文件名列表,而不是整个路径! – 2014-08-04 07:15:07