bash - 如何在具有多个文件名条件的 bash shell 中使用 find 语句
问题描述
我需要显示“final”目录和以 2 个下划线开头的子目录中的所有文件,后跟任意数量的任意字符,以数字结尾,扩展名为“.c”。
我可以在这里得到一些帮助吗?我无法弄清楚如何使用满足要求的多个条件。
#!/bin/bash
fine . -type f -iname "__*"
find . -type f -iname "*.c"
解决方案
如果我正确理解所需的文件名模式,这应该有效:
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”之前查找单个数字,而不是潜在的多位数字。但如果多于一位,“*”将匹配除最后一位以外的所有数字,所以这不是问题。
推荐阅读
- c - 重新分配 malloc 的字符串会导致内存泄漏吗?
- amazon-web-services - AWS RDS 连接问题
- ruby-on-rails - RSpec 给了我一个 LoadError
- excel - 读取 CSV 文件并写入特定工作表中的已知位置
- swift - Swift UIView zPosition 问题,视图与其他视图重叠
- javascript - 我如何只读值属性?
- node.js - 如何在社交媒体应用程序中显示包含群组参与者数量的群组列表?
- python - 根据具有预分配唯一标识符的数据帧为数据帧行分配唯一标识符
- python - 如何解决 ModuleNotFoundError:虚拟环境中没有名为“skimage”的模块
- android-studio - 不能全部导入 - Android Studio