查找前缀和后缀匹配的文件

时间:2016-05-25 09:55:42

标签: linux bash find

我想找到文件名的第一部分(直到第一个.)与文件扩展名匹配的所有文件(在最后一个.之后)。

例如,以下文件将匹配:

cat.cat
cat.txt.cat

cat.txt.asm不会。

如何使用find

执行此操作

3 个答案:

答案 0 :(得分:4)

使用-regex选项find

find -regex '.*/\([^.]+\)\.\(.*\.\)?\1'
  • .*/匹配文件的路径
  • \([^.]+\)捕获第一个点之前的任何内容(+表示至少一个字符)
  • \(.*\.\)?匹配中间部分,即以点结尾的任何内容,但整个内容是可选的
  • \1表示重复第一次捕获

在egrep方言中可能更具可读性:

find -regextype egrep -regex '.*/([^.]+)\.(.*\.)?\1'

答案 1 :(得分:1)

    find . -type f -iname "*" | awk -F/ '{print $2}' |awk -F. '$1==$NF'

Or

    ls -1 | awk -F. '$1==$NF'

答案 2 :(得分:-1)

对不起,这是更好的:

你可以简单地这样做:

例如找到toto.tata.toto具体:

find . -regex ".*\(toto\)[^\/]*\.\1"

通用:

find . -regex ".*/\([^./\]*\)[^\/]*\.\1"