我正在尝试编写一个模式,该模式将匹配包含以下内容的目录中的任何文件名:数字,后面紧跟字母“e”或“h”。 (例如:3e.txt)
我需要在终端/ shell中测试这些模式。我尝试过编写几种模式,但是他们都无法找到我故意放在工作目录中测试模式的3e.txt和3h.txt文件。
$ ls [0-9[e]*[h]*]?
$ ls [0-9][e]?
我对shell很新,所以我不确定我是否正确使用通配符。如何更正我的模式,使其与我要搜索的文件名相匹配?
答案 0 :(得分:0)
大多数shell不支持正则表达式。您可以在ls
中管道egrep
进行模式匹配:
$ ls | egrep '[0-9][eh]'
答案 1 :(得分:0)
ls
不支持模式的正则表达式语法。您需要将ls
输出重定向到某个正则表达式工具,例如grep:
ls | grep '[0-9][eh]'
请注意,您需要的模式实际上是[0-9][eh]
,这是一个数字后跟e
或h
。
这将列出所有带有数字的文件,后跟e
或h
,即使在名称的中间。如果您只需要使用此序列开始的文件,请将^
添加到正则表达式:
ls | grep '^[0-9][eh]'
答案 2 :(得分:0)
这是一个与 <?php
$query1=mysql_query("SELECT `a_id`,`a_name` FROM `photo_album`");
while ($run=mysql_fetch_array($query1)){
$album_id =$run['id'];
$album_name=$run['name'];
$query2= mysql_query("SELECT `url` FROM `photo_gal` WHERE `album_id`='$album_id'");
$run1 = mysql_fetch_array($query2);
$pic = $run1['url'];
while($ft=mysqli_fetch_array($query)){
?>
,3e.txt
但不是2h.txt
等模式匹配的正则表达式。
3eh.txt
这意味着“由单个'e'或'h'后缀的任何数字,带有.xxx后缀”。