Linux 查找前缀和后缀匹配的文件
我想查找文件名的第一部分(直到第一个Linux 查找前缀和后缀匹配的文件,linux,bash,find,Linux,Bash,Find,我想查找文件名的第一部分(直到第一个)与文件扩展名(在最后一个之后)匹配的所有文件 例如,以下文件将匹配: cat.cat cat.txt.cat 而cat.txt.asm则不会 如何使用查找?抱歉,这样更好: 您可以简单地执行以下操作: 例如,查找toto.tata.toto-specific: find . -regex ".*\(toto\)[^\/]*\.\1" 通用: find . -regex ".*/\([^./\]*\)[^\/]*\.\1" 对不起,这样比较好: 您可以简
)与文件扩展名(在最后一个
之后)匹配的所有文件
例如,以下文件将匹配:
cat.cat
cat.txt.cat
而cat.txt.asm
则不会
如何使用查找?抱歉,这样更好:
您可以简单地执行以下操作:
例如,查找toto.tata.toto-specific:
find . -regex ".*\(toto\)[^\/]*\.\1"
通用:
find . -regex ".*/\([^./\]*\)[^\/]*\.\1"
对不起,这样比较好:
您可以简单地执行以下操作:
例如,查找toto.tata.toto-specific:
find . -regex ".*\(toto\)[^\/]*\.\1"
通用:
find . -regex ".*/\([^./\]*\)[^\/]*\.\1"
使用-regex选项查找
:
find -regex '.*/\([^.]+\)\.\(.*\.\)?\1'
*/
匹配文件的路径
\([^.]+\)
捕获第一个点之前的任何内容(+
表示至少一个字符)
\(.*.\)?
匹配中间部分,即任何以点结尾的内容,但整个内容是可选的
\1
表示重复第一次捕获
在白鹭方言中可能更具可读性:
find -regextype egrep -regex '.*/([^.]+)\.(.*\.)?\1'
使用-regex选项查找
:
find -regex '.*/\([^.]+\)\.\(.*\.\)?\1'
匹配文件的路径*/
捕获第一个点之前的任何内容(\([^.]+\)
表示至少一个字符)+
匹配中间部分,即任何以点结尾的内容,但整个内容是可选的\(.*.\)?
表示重复第一次捕获\1
find -regextype egrep -regex '.*/([^.]+)\.(.*\.)?\1'
对您应该使用find来完成此操作。但是你的问题写得很混乱。如果英语不是你的第一语言,请给我们输入和输出。好的,对不起,再一次。对于脚本,我给出了一个参数,即目录树。然后,它应该遍历所有文件,并查找其中一个扩展名(在点之后)与其在点之前的名称相同的文件-filename.filename您可以使用并学习如何形成适当的regex../script目录///result=file.file,txt.txt,hello.hello。。等等。您应该使用find来完成此操作。但是你的问题写得很混乱。如果英语不是你的第一语言,请给我们输入和输出。好的,对不起,再一次。对于脚本,我给出了一个参数,即目录树。然后,它应该遍历所有文件,并查找其中一个扩展名(在点之后)与其在点之前的名称相同的文件-filename.filename您可以使用并学习如何形成适当的regex../script目录///result=file.file,txt.txt,hello.hello。。这个regexp是错误的。它不会匹配正确的文件,也不会匹配所有文件。regexp错误。它不会匹配正确的文件,也不会匹配所有文件。