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



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

例如,以下文件将匹配:

cat.cat
cat.txt.cat

cat.txt.asm不会。

如何使用find执行此操作?

使用 -regex 选项find

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

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

find -regextype egrep -regex '.*/([^.]+).(.*.)?1'
    find . -type f -iname "*" | awk -F/ '{print $2}' |awk -F. '$1==$NF'
Or
    ls -1 | awk -F. '$1==$NF'

对不起,这样更好:

您可以简单地这样做:

例如,查找toto.tata.toto特定:

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

通用:

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

最新更新