【问题标题】:listing directories and sub-directories to an array with path;将目录和子目录列出到带有路径的数组中;
【发布时间】:2012-01-24 01:40:25
【问题描述】:

我需要一个使用 Perl 存储在数组中的所有目录和子目录的列表。

例如:

$array[0] = '/home';
$array[1] = '/home/ali';
$array[2] = '/home/perl';
$array[3] = '/home/stackoverflow';
$array[4] = '/home/ali/desktop';
$array[5] = '/home/ali/sub';
$array[6] = '/home/stackoverflow/new';

【问题讨论】:

  • 这个目录列表和它们的子目录,你的程序会自己找出来吗?与您从输入文件中提供信息相反,可能使用ls 编译。
  • 我可以使用ls 来列出数组吗?
  • ls,如果您使用的是 linux 机器,将列出当前工作目录中的文件和子目录。如果您只想要子目录,cd 到home/ 并在 bash 终端中尝试find home/ -type d,这将打印所有子目录的列表,包括/home。然后,您可以将其作为输入文件(更简单)输入到您的程序中,或者让您的程序运行命令,可能就像调用 bash 脚本一样。不过,这些命令只能在 Unix 系统上运行。

标签: arrays perl directory


【解决方案1】:

你可以用老式的方式来做:

File::Find::find( sub {
        say $File::Find::name if -d $File::Find::name
    }, @array 
    );

【讨论】:

    【解决方案2】:
    my @array = ('/home', grep -d, glob '/home/*');
    

    【讨论】:

    • 这不会按要求递归,它会跳过名称以.开头的目录
    【解决方案3】:
    use File::Find::Rule;
    my @array = File::Find::Rule->directory->in('/home');
    

    File::Find::Rule

    【讨论】:

    • 那么你需要告诉我们为什么你不能使用所示的方式,如果我们要建议一个没有相同未说明缺陷的替代方案......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 2012-02-22
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多