我需要在Perl脚本中从find
命令获取示例文件文件,然后再创建另一个系统调用。出于某种原因,当我从脚本中调用它时,find
命令会卡住。这是我需要做的:
my $search_dir = "/something/like/this/??/??/??";
# the triple '??' are needed here
my $cmd = "find $search_dir -name \"\*.$var1.token1.$var2.ext\" | head -n 1";
my $first_example_file = `$cmd`; chomp $first_example_file;
当我通过Perl运行时它会卡住,它永远不会完成执行命令,而构建的$ cmd会立即运行,如果我复制+粘贴它并在我的bash终端中运行。有什么想法吗?
答案 0 :(得分:5)
尝试使用File::Find perl模块查找文件。如果您想在bash's find
中使用perl
,则可能需要在命令中使用$(..)
。
我不在perl
...只是想帮忙。
<强>更新强>
正如Rohaq
的评论中所述,您也可以使用File::Find::Rule
答案 1 :(得分:1)
我打算使用globbing(shell元字符扩展)。但不管怎样,试着把命令砍掉。它没有管道吗?没有??怎么样?在路径名?如果你在前面添加'echo'(“echo find ...”)会发生什么?还挂?然后你可以在perl -d下调试它 - 调试器; perldoc perldebug是你的朋友。