当前位置: 首页 > news >正文

bash的特性-常用的通配符

在Linux或Unix系统中,Bash作为最常用的命令行解释器之一,提供了多种通配符(wildcards)来帮助用户更高效地进行文件操作。这些通配符可以用来匹配多个文件名或路径名,极大地简化了批量处理任务。本文将详细介绍Bash中常用的通配符及其使用场景。

一、基本通配符介绍

(一)星号 *

*是最常见的通配符,它可以匹配任意长度的字符序列,包括空字符串。

示例:

假设当前目录下有以下文件:

file1.txt
file2.txt
image.jpg
backup.tar.gz

你可以使用如下命令列出所有以.txt结尾的文件:

ls *.txt

这将输出:

file1.txt
file2.txt

(二)问号 ?

?用于匹配单个任意字符。

示例:

如果你想要匹配只有一个字符不同的文件名,比如file1.txtfile2.txt,可以这样操作:

ls file?.txt

这同样会输出:

file1.txt
file2.txt

(三)方括号 [...]**

方括号内可以指定一个字符集,匹配其中任何一个字符。也可以使用连字符 - 来表示范围。

示例:
  • 匹配以fb开头的所有文件:

    ls [fb]*

    输出可能为:

    file1.txt
    file2.txt
    backup.tar.gz
  • 匹配以数字结尾的文件:

    ls *[0-9]

    如果存在file1这样的文件,则会被列出。

(四)排除字符集 [^...] 或 [!...]

在方括号内加上^或者!可以在字符集中排除特定字符。

示例:

如果你想列出除.txt以外的所有文件:

ls *.[^t][^x][^t]

或者更简洁的方式是直接排除:

ls !(*.txt)

注意:后一种方式需要开启extglob选项,可以通过shopt -s extglob来启用。

二、扩展通配符

除了上述基础通配符外,Bash还支持一些扩展模式匹配功能,但需先确保启用了extglob选项。

(一)启用extglob

在终端中运行以下命令来启用扩展通配符支持:

shopt -s extglob

(二)扩展通配符示例

  • !(pattern):匹配任何不包含给定模式的文件。
  • *(pattern):匹配零次或多次出现的给定模式。
  • +(pattern):匹配一次或多次出现的给定模式。
  • ?(pattern):匹配零次或一次出现的给定模式。
  • @(pattern):匹配一次给定模式。
示例:

假设目录中有如下文件:

fileA.txt
fileB.txt
fileC.log
fileD.log
  • 列出所有非.txt文件:
    ls !(file*.txt)
  • 查找至少有一个file前缀且扩展名为.log的文件:
    ls +(file)*.log

三、实际应用场景

(一)批量重命名

结合通配符与mv命令,可以轻松实现文件的批量重命名。

示例:

将所有.jpg图片转换为.png格式并重命名:

for file in *.jpg; do mv "$file" "${file%.jpg}.png"; done

(二)查找并删除特定类型的文件

使用通配符可以帮助快速定位并删除不需要的文件类型。

示例:

删除当前目录及其子目录下所有的临时文件(如.tmp):

find . -name "*.tmp" -type f -delete

四、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关文章:

  • HarmonyOS-ArkUI V2装饰器: @Computed装饰器:计算属性
  • 【刷题2025】知识点梳理
  • Notepad++中将文档格式从Windows(CR LF)转换为Unix(LF)
  • ollama修改配置使用多GPU,使用EvalScope进行模型压力测试,查看使用负载均衡前后的性能区别
  • vue复习46~90
  • designware IP如何被FPGA综合
  • 【控制学】控制学分类
  • 儿童后期至青少年早期脑网络隔离增强的发育机制研究
  • 中国反制关税影响分析、可能性分析
  • 基于Python的PC控制Robot 小程序开发历程
  • 虚拟机ubuntu网络如何使用windows物理机的代理
  • 【差分隐私相关概念】瑞丽差分隐私(RDP)引理1
  • 【差分隐私相关概念】瑞丽差分隐私(RDP)-命题1
  • Web前端开发——图像与多媒体文件(上)
  • 计算机视觉——基于 Yolov8 目标检测与 OpenCV 光流实现目标追踪
  • 在ros2上使用opencv显示一张图片
  • 智能指针(内存泄漏)
  • 高德地图自有数据添加图层
  • Ubuntu安装yum遇到Package ‘yum‘ has no installation candidate
  • CSRF(跨站请求伪造)漏洞概述
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 锦江酒店:第一季度营业收入约29.42亿元,境内酒店出租率同比增长
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 初步结果显示,卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 幸福航空五一前三天航班取消:客服称目前是锁舱状态,无法确认何时恢复