perl 递归地遍历目录下的文件

#!/usr/bin/perl -w
use strict;
use File::Spec;

local $\ ="\n";#当前模块的每行输出加入换行符    

my %options;

#目录路径
$options{single_case} = ‘/home/jiangyu/src/pl/Example‘;

   my @cases;
    if (-d $options{single_case}) {#判断目录是否存在
        my @files;
        my $dh;
        push(@files, $options{single_case});
        while (@files) {
            if (-d $files[0]) {#若是目录执行以下操作
                opendir $dh, $files[0] or die $!;#打开目录句柄,若失败打印错误信息
                @_ = grep { /^[^\.]/ } readdir $dh;#过滤掉以"."和".."的文件,即UNIX下的隐藏文件
                foreach (@_) {
                    push(@files, File::Spec->catfile ($files[0], $_));#连接目录名和文件名形成一个完整的文件路径:
                }
                closedir $dh;
            }
            #若是文件直接压入数组@cases中
            elsif ($files[0] =~ /\.t$/) {
                push(@cases, $files[0]);
            }
            shift @files;
        }
    }
    else {
        @cases = ($options{single_case});
    }

print $_ foreach @cases;#打印文件列表
时间: 2024-10-27 05:30:33

perl 递归地遍历目录下的文件的相关文章

Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a" def gci (path): parents = os.listdir(path) for parent in parents: child = os.path.join(path,parent) #print(child) if os.path.isdir(child): gci(child) # print(child) else: print(child) gci(path) #使用os.walk方

(实用篇)PHP不用递归遍历目录下所有文件的代码

<?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

Linux和Windows的遍历目录下所有文件的方法对比

首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 先看Linux的,返回的是DIR*,因此出错时返回NULL(0).而这里不用关心DIR结构具体定义,只需要知道是对它进行操作(注意:DIR不是保存文

[转载]Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a"def gci (path):"""this is a statement"""parents = os.listdir(path)for parent in parents:child = os.path.join(path,parent)#print(child)if os.path.isdir(child):gci(child)# print(

rrmdir php中递归删除目录及目录下的文件

php自带的rmdir,只能删除空目录,这个rrmdir就可以递归删除目录及目录下的所有文件,不过使用起来要小心哦,不要把所有文件都删了 function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != “.” && $object != “..”) { if (filetype($dir.”/”.$object) == “

个人笔记:PHP递归删除指定目录下的文件和目录

function DelDir($path){ //给定的目录不是一个文件夹 if(!is_dir($path)){ return null; } // 1 打开目录 $dir =opendir($path); // 去除. 和.. while ($filename =readdir($dir)) { if ($filename =='.' || $filename == '..') { continue; } // 拼接完整路径,不拼接会到当前路径下找 $filepath =$path.'/'

遍历目录下的文件

#!/bin/sh for file in ./*do if [ -f $file ];then echo $file echo 是文件 fi if [ -d $file ];then echo $file echo 是目录 fidone

递归读取制定目录下所有文件夹和文件的实现(java)

public static String getAllDirectorisAndFiles(String path){ Map<String, Object> responseMap = new HashMap<String, Object>(); responseMap.put("time_stamp", Tools.currentTime()); String responseString = ""; try { getDirectori

C/C++遍历目录下的所有文件(Windows篇,超详细)

注:本文讨论的是怎么用Windows API遍历目录下的所有文件.除Windows API,还有一种Windows/Linux通用的方式,使用<io.h>. WIN32_FIND_DATA结构 遍历目录下的文件需要用到WIN32_FIND_DATA结构.实际上有两种结构:WIN32_FIND_DATAA和WIN32_FIND_DATAW.A和W分别代表ASCII和宽字符(Unicode).定义UNICODE宏时,WIN32_FIND_DATA指WIN32_FIND_DATAW:否则指WIN32