Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用通配符获取File::Find perl模块中的目录列表?_Perl_File Find - Fatal编程技术网

是否可以使用通配符获取File::Find perl模块中的目录列表?

是否可以使用通配符获取File::Find perl模块中的目录列表?,perl,file-find,Perl,File Find,我想列出包含所需目录的目录路径 例如: /usr1 | | ----------------------------------------- |

我想列出包含所需目录的目录路径

例如:

                                 /usr1
                                    |
                                    |
                -----------------------------------------   
                |                                       |
            /local1                                     /local2
                |                                       |
              dir1                                      dir1
我想使用通配符
*
查找dir1所在的目录路径

从linux命令行,我可以这样做以获得结果

find /usr1/local* -name dir1 -type d
然后它就会显示出来

/usr1/local1/dir1
/usr1/local2/dir1
使用File::Find perl模块的方法与此相同

我不想使用
系统
`
来完成它

find /usr1/local* ...

因此,整体是

use File::Basename qw( basename );
use File::Find     qw( find );

my $wanted = sub {
   say if basename($_) eq "dir1" && -d $_;
};

find({ wanted => $wanted, no_chdir => 1 }, glob("/usr1/local*"));
就我个人而言,我更喜欢

相当于

find /usr1/local* ...

因此,整体是

use File::Basename qw( basename );
use File::Find     qw( find );

my $wanted = sub {
   say if basename($_) eq "dir1" && -d $_;
};

find({ wanted => $wanted, no_chdir => 1 }, glob("/usr1/local*"));
就我个人而言,我更喜欢


对结构感到抱歉。认为你应该阅读模块的文档对结构感到抱歉。认为你应该阅读模块的文档当
glob
返回文件和目录时不会
find
抱怨?@simbabque,不,也不会
find
抱怨。
find(…,grep{-d}glob(/usr1/local*))
@shawnhcorey,这是不等价的。当
glob
返回文件和目录时,不会
find
抱怨吗?@simbabque,不,也不会
find
抱怨。
find(…,grep{-d}glob(/usr1/local*)
@shawnhcorey,这是不等价的。