我想查找所有扩展名为“tif”或“tiff”的文件,大写或小写。 目前我使用下面的代码:使用glob通过扩展名查找文件
$total_files = glob(BATCH_TIFF_PATH."*.[tT][iI][fF]")
但我只得到那些大写或小写为.tif
文件
其中BATCH_TIFF_PATH
是恒定的路径,包括在最后一个路径的\
。
我也想限制在文件夹中找不到ti
或tifff
。
我想查找所有扩展名为“tif”或“tiff”的文件,大写或小写。 目前我使用下面的代码:使用glob通过扩展名查找文件
$total_files = glob(BATCH_TIFF_PATH."*.[tT][iI][fF]")
但我只得到那些大写或小写为.tif
文件
其中BATCH_TIFF_PATH
是恒定的路径,包括在最后一个路径的\
。
我也想限制在文件夹中找不到ti
或tifff
。
这应该可以做到。
$total_files = glob(BATCH_TIFF_PATH."*.{[tT][iI][fF][fF],[tT][iI][fF]}", GLOB_BRACE)
既然你只是在寻找这两个扩展,为什么不直接在正则表达式中硬编码呢?
\.(tif|tiff|TIFF|TIF)$
这将匹配字符串(文件名)末尾的tif,tiff,TIF或TIFF之后的点。
试过这个,但不工作$ total_files = glob(BATCH_TIFF_PATH。“*。(tif | tiff | tif)$”) –
请务必转义点字符,否则会(应该? )充当一个特殊的正则表达式运算符。 –
$ total_files = glob(BATCH_TIFF_PATH。“* \。(tif | tiff | TIFF | TIF)$”);不工作,我认为这个问题与glob方法规范有关。 –
我不知道真正的批处理正则表达式,但这通常会起作用,你只需要适应它。
.*\.(tiff?|TIFF?)$
试着用'GLOB_BRACE',忘了添加它。 – ohaal
glob没有任何问题。除非......你在测试什么操作系统?我怀疑Windows,完全基于你说'BATCH_TIFF_PATH'最后有一个反斜杠? – ohaal
是的,我正在使用Windows亲切地为我提供一个解决方案。 –