use*_*702 0 directory perl hidden glob traversal
我正在尝试编写一个 Perl 脚本来执行预排序目录遍历。我需要它来获取给定目录的所有子目录,包括隐藏的子目录。不幸的是,当我尝试以这种方式进行通配时:
<$dir/* $dir/.*>
... 原因 ”。” 和“..”也会被返回,这会扰乱我的函数,因为它会导致无限循环。如何仅获取$dir 的子文件夹(常规和隐藏),而不获取当前或上层目录?
例如,如果我的文件夹是“dir”并且它包含以下子目录:
你好
.hiddendir
“名称中带有空格的目录”
“名称中带有空格的.hidden目录”
dir2
...我想得到一个只有这些而不是“.”的数组。或者 ”..”。
我不在乎文件是否也出现,因为我稍后使用“if (-d $dir)”。有没有办法可以测试通配数组的元素是否等于当前目录或父目录,以便我可以排除它们?
谢谢
perl -MFile::Find::Rule -E'
say
for
File::Find::Rule->directory->in(".");'
Run Code Online (Sandbox Code Playgroud)
或者
perl -MFile::Find::Rule -E'
say
for
grep $_ ne ".",
File::Find::Rule->directory->in(".");'
Run Code Online (Sandbox Code Playgroud)