检查regex Linux指定的目录中是否存在文件

时间:2016-06-22 11:48:00

标签: regex linux shell unix

我试图在文件操作符中使用正则表达式来寻找一个用正则表达式指定一个子目录的文件,但我想知道它是否可能。我想我尝试了所有引用和括号组合。要么我在这里遗漏了某些东西,要么文件操作员需要特定的路径?

我不完全确定。有人可以澄清一下吗?

我想要实现的是这样的事情(这显然不起作用,因为它将正则表达式部分作为子目录的名称)

if [[ -r '/agent/[0-9 .]*/bin/run.sh' ]]

3 个答案:

答案 0 :(得分:5)

查找有一个createBufferedImage选项

  

-regex pattern

     

文件名与正则表达式匹配。这是整个路径上的匹配,而不是搜索。例如,匹配文件   名为-regex。* bar。'要么   ./fubar3', you can use the regular expression,但不是.*b.*3。 find理解的正则表达式默认是Emacs正则表达式,但可以使用   -regextype选项。

f.*r3

答案 1 :(得分:1)

根据manual,只有 =〜运算符才能进行正则表达式匹配。

还有另一种方式:

RUNFILES=$( find /agent -name run.sh | grep -e '^/agent/[0-9 .]*/bin/run.sh$' )
if [ -n "$RUNFILES" ]
then
[...]
fi

答案 2 :(得分:0)

您可以简单地将ls命令与正则表达式一起使用:

if ls /agent/[0-9\ .]*/bin/run.sh