我必须创建一个bash脚本,它将在给定目录中搜索某些文件扩展名。文件扩展名的格式为.210 .110 .311 .211,依此类推。我不能仅仅使用“ .2 ,因为名称中有文件名。有没有办法在” .2 “之后设置缓冲区,以便扩展名只有3个字符?这将从搜索中删除所有不正确的结果。
现在我正在使用find /cygdrive/x/Clients -name '*.210'
谢谢!
答案 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提到的通配符要慢一些