我想找到文件名的第一部分(直到第一个 .
)与文件扩展名(在最后一个 .
之后)相匹配的所有文件。
例如,以下文件将匹配:
cat.cat
cat.txt.cat
而 cat.txt.asm
不会。
如何使用 find
执行此操作?
最佳答案
使用 -regex 选项查找
:
find -regex '.*/\([^.]+\)\.\(.*\.\)?\1'
.*/
匹配文件的路径\([^.]+\)
捕获第一个点之前的所有内容(+
表示至少一个字符)\(.*\.\)?
匹配中间部分,即以点结尾的任何内容,但整个内容是可选的\1
表示重复第一次抓包
在 egrep 方言中可能更具可读性:
find -regextype egrep -regex '.*/([^.]+)\.(.*\.)?\1'
关于linux - 查找前缀和后缀匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37433648/