我无法执行dir
命令,指定要搜索的文件名all.xml
时出错,我无法使用/s
命令递归搜索,i得到以下错误cannot access no such file exists
并且不理解/s
参数用于递归搜索,程序将其解释为文件路径
use strict;
use warnings;
print "i";
my $vall = ` dir //server1/dxx/mxx/rxx/ "ui.xml" /s`;
print $vall;
答案 0 :(得分:1)
这与Perl无关。您传递给dir
的参数不正确。
dir
将/
解释为选项的开头,除非它被引用,/s
不适用于包含/
和文件组件的路径。此外,除了/b
之外,您可能还需要/s
。
修正:
dir "\\server1\dxx\mxx\rxx\ui.xml" /s/b
所以
my $dir_output = `dir "\\\\server1\\dxx\\mxx\\rxx\\ui.xml" /s/b`;
实施例,
>dir "//localhost/C$/Users/ikegami/Desktop/" /s/b
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\cabinet.txt
...
>dir "//localhost/C$/Users/ikegami/Desktop/a.jpg" /s/b
File Not Found <-- WTF?
>dir "\\localhost\C$\Users\ikegami\Desktop\a.jpg" /s/b
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg
>dir \\localhost\C$\Users\ikegami\Desktop\a.jpg /s/b
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg
>type a.pl
print `dir \\\\localhost\\C\$\\Users\\ikegami\\Desktop\\a.jpg /s/b`
>perl a.pl
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg
那就是说,我个人使用File::Find::Rule。
use File::Find::Rule qw( );
my $qfns =
File::Find::Rule
->name('ui.xml')
->file
->in('//server1/dxx/mxx/rxx');