我想在文件扩展名中找到有日期的文件。在具有下列文件的文件夹中:
jvm-app-0.log.20180124.0000
jvm-app-0.log.20180124.0341
jvm-app-0.log.20180124.0341.tz
jvm-app-0.log.20180124.0355我只想找到
jvm-app-0.log.20180124.0000
jvm-app-0.log.20180124.0341
jvm-app-0.log.20180124.0355编辑:如果第二个块也是可选的。例如:
access.log.20180124
access.log.20180125我试过以下几点:
find . * | grep "\*\.[0-9]{8}\.\*"
find . -regextype posix-egrep -regex '*\.[0-9+]\.[0-9+]'
find . -regextype posix-egrep -regex '*\.[0-9+]\.*'
find . -regextype posix-egrep -regex '\.[0-9+]\.*'
find . -regextype sed -regex "*.{[0-9]+\.[0-9]+}"发布于 2018-03-22 11:59:16
find . -regex '.*\.[0-9]+'.*而不是*来匹配任何前缀。+需要位于方括号之外。-regextype是不必要的。如果启用了extglob,则可以在shell中直接执行此操作:
$ shopt -s extglob
$ ls *.+([0-9])
jvm-app-0.log.20180124.0000 jvm-app-0.log.20180124.0341 jvm-app-0.log.20180124.0355如果您想要递归搜索,也可以打开globstar:
$ shopt -s extglob globstar
$ ls **/*.+([0-9])
jvm-app-0.log.20180124.0000 jvm-app-0.log.20180124.0341 jvm-app-0.log.20180124.0355发布于 2018-03-22 11:57:26
你已经接近了,你可以使用这个find
find . -regextype posix-egrep -regex '.*\.[0-9]+\.[0-9]+$'以上find将需要gnu find。要使它在其他find版本(如BSD )上工作,请使用:
find . -regex '.*\.[0-9]*\.[0-9]*$'如果您使用的是bash,您也可以在globstar和中使用extglob,避免 find
shopt -s globstar extglob nullglob
printf '%s\n' **/*.+([0-9])https://stackoverflow.com/questions/49428043
复制相似问题