首页 > 解决方案 > 如何在具有多个文件名条件的 bash shell 中使用 find 语句

问题描述

我需要显示“final”目录和以 2 个下划线开头的子目录中的所有文件,后跟任意数量的任意字符,以数字结尾,扩展名为“.c”。

我可以在这里得到一些帮助吗?我无法弄清楚如何使用满足要求的多个条件。

#!/bin/bash
fine . -type f -iname "__*"
find . -type f -iname "*.c"

标签: bashshell

解决方案


如果我正确理解所需的文件名模式,这应该有效:

find . -type f -iname "__*[0-9].c"

这几乎是将您的描述直接翻译成 glob 模式语法:

"__" (start with 2 underscore)
"*" (any number of any characters)
"[0-9]" (a number)
".c" (with the “.c” extension)

唯一与您的描述不完全对应的是,这仅在“.c”之前查找单个数字,而不是潜在的多位数字。但如果多于一位,“*”将匹配除最后一位以外的所有数字,所以这不是问题。


推荐阅读