使用正则表达式或其他东西来搜索文件扩展名

时间:2011-10-13 14:00:35

标签: regex bash cygwin

我必须创建一个bash脚本,它将在给定目录中搜​​索某些文件扩展名。文件扩展名的格式为.210 .110 .311 .211,依此类推。我不能仅仅使用“ .2 ,因为名称中有文件名。有没有办法在” .2 “之后设置缓冲区,以便扩展名只有3个字符?这将从搜索中删除所有不正确的结果。

现在我正在使用find /cygdrive/x/Clients -name '*.210'

谢谢!

3 个答案:

答案 0 :(得分:3)

您应该能够使用通配符。对于具有3位数字扩展名的所有文件,以下内容就足够了。

ls *.[0-9][0-9][0-9] 

如果您只想要以数字2开头的扩展程序,请尝试以下操作:

ls *.2[0-9][0-9]

答案 1 :(得分:2)

如果我正确阅读了您的问题,您只需在目标目录中运行以下命令:

printf '%s\n' *.[0-9][0-9][0-9]

输出不包括点文件。如果您需要它们,可以启用 dotglob * bash *选项。启用 nullglob 选项会更安全(请参阅下面的@ c00kiemon5ter的注释)。

答案 2 :(得分:1)

如果你输入grep

,你可以使用正则表达式
find /cygdrive/x/Clients | grep "\.2\d\d$"

但这比使用Kurt S提到的通配符要慢一些