正则表达式以bash格式检查文件

时间:2011-11-10 21:14:01

标签: regex file bash

是否可以在bash中检查文件是否存在正则表达式?

我尝试如下:

if [ -f /path/to/file*.txt ]

但不幸的是,这不起作用。

有谁知道这是怎么回事?

2 个答案:

答案 0 :(得分:3)

只要只有一个文件与模式匹配,您的方法就会起作用。 bash首先扩展通配符,从而产生如下调用:

if [ -f /path/to/file*.txt ]
if [ -f /path/to/file1.txt ]
if [ -f /path/to/file1.txt /path/to/file2.txt ]

取决于匹配数(分别为0,1,2)。要检查是否存在,您可以使用find:

find /path/to -name 'file*.txt' | grep -q '.'

答案 1 :(得分:0)

正如@thiton所解释的,glob (not a real regexp)已展开,并且当存在多个与glob匹配的文件时,检查失败。

您可以改用compgen,如此处所述 Test whether a glob has any matches in bash Read more on the man page of compgen

这是一个例子

if $(compgen -G "/path/to/file*.txt" > /dev/null); then
    echo "Some files exist."
fi