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

标签 linux bash find

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

例如,以下文件将匹配:

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/

相关文章:

c - 如何在我的程序中获取 _GLOBAL_OFFSET_TABLE_ 地址?

linux - 如何获得树可视化?

sed - 从 find 创建符号链接(symbolic link)

linux - 在 linux 命令行上反向目录搜索

c++ - find() 在 C++ header 中不起作用

linux - 为什么 wicket maven 原型(prototype)不是网络?

linux bash 不显示作业消息

linux - 如何在 Linux 中关闭自动添加转义字符功能

bash - 使用 find 和 iconv 更改文件名

bash 语法错误 : invalid arithmetic operator with token "@mail.com"