正则表达式的使用示例--Everything文件检索批量重命名工具

一、引言

Everything是一款非常实用的文件搜索工具,它可以帮助您快速定位并查找计算机中的文件和文件夹。Everything搜索文件资料之神速,有使用过的朋友们都深有体会,相对于Windows自带的搜索功能,使用Everything,可以让我们享受使用搜索引擎一般地在本地硬盘上搜索我们的文件信息。
本文将为您提供一些基本的使用指南,并介绍我的使用经验,希望大家可以更好地利用Everything这个工具。

二、本文使用场景

文件检索、文件重命名

今天小编在进行数据处理的时候,遇到一个文件重命名的问题,在网上查了好多内容,也没有找到合适的方法,小编自己测试的方法,现将经验的方法分享给大家,希望对大家有帮助。
以下是具体的问题情况描述如下:

    1. 搜索文件名称以数字开头,且数字的位数为1位数字;
    1. 文件的格式后缀为.jpg
    1. 文件名称中包含汉字;
    1. 将文件名称的1位数字修改为2位数字,就是在文件名是数字开头的1位数字的前面加个0;
    1. 需要修改的文件数量100+,一个一个的改太费劲了(还是得想办法啊);
    1. 文件夹内还包含子文件夹,子文件夹内的文件名称也需要修改;

例如:

需要将 “1测试数据16.jpg” 修改为 “01.测试数据.jpg

注意在01后面需要加一个.并去掉汉字后面的数字

需要说明的是修改文件名称这样的问题也可以使用python编写修改文件名称的py文件。由于我之前安装了Everything这个工具【点击此处下载】,所以想偷个懒,想结合正则表达式,利用Everything的重命名功能。(有没有不知道的Everything可以重命名的小伙伴呢?----莫名的优越感,嘿嘿!)


三、正则表达式

要想发挥Everything高效的优势,那就必须得懂得使用正则表达式
正则表达是的语法在此我就不再赘述了。在网上一搜有很多:
想要学习的伙伴,小编推荐网站-点击此处打开【菜鸟教程】进行学习

本文可能用到用到的知识点:
正则表达式元字符和特性

字符匹配

  • 普通字符:普通字符按照字面意义进行匹配,例如匹配字母 “a” 将匹配到文本中的 “a” 字符。
  • 元字符:元字符具有特殊的含义,例如\d匹配任意数字字符,\w 匹配任意字母数字字符,. 匹配任意字符(除了换行符),\p{Han}匹配汉字等字符…
  • 量词
    *:匹配前面的模式零次或多次。
    +:匹配前面的模式一次或多次。
    ?:匹配前面的模式零次或一次。
    {n}:匹配前面的模式恰好 n 次。
    {n,}:匹配前面的模式至少 n 次。
    {n,m}:匹配前面的模式至少 n 次且不超过 m 次。
  • 字符类
    [ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 “a”、“b” 或 “c”。
    [^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 “a”、“b” 或 “c” 以外的任意字符。
  • 边界匹配
    ^:匹配字符串的开头。
    $:匹配字符串的结尾。
    \b:匹配单词边界。
    \B:匹配非单词边界。
  • 分组和捕获
    ( ):用于分组和捕获子表达式。(本文需要着重理解的地方,可以结合后面文件重命名进行理解)
    (?: ):用于分组但不捕获子表达式,(暂时还没有实践案例)。
  • 特殊字符
    \:转义字符,用于匹配特殊字符本身。
    .:匹配任意字符(除了换行符)。
    |:用于指定多个模式的选择。

四、使用示例分享

1.如何使用正则表达式匹配汉字(此方法比较便捷)?

  • 使用元字符进行汉字匹配,下述表示的是匹配任意一个汉字字符。
 regex:\p{Han}
  • 使用元字符进行汉字匹配,下述表示的是匹配任意一个汉字字符开头。可以使用^筛选开头,$筛选结尾。点击菜单栏/帮助/正则表达式语法即可查看,不再赘述。
 regex:^\p{Han}
  • 至于应为英文字字母
 regex:[a-zA-Z]
  • 至于数字
 regex:[0-9]
 或者
  regex:\d  #注意不是一位数字,只要文件(夹)名称是包含数字就被检索出来

如下图所示:
在这里插入图片描述

2.如何找到以1位数字开头的文件?
以下几种方法等价^$放在括号里面和外面都一样,后面我将介绍括号的用法。

regex:^([0-9])$
regex:(^[0-9])$
regex:(^[0-9]$)
regex:(^[0-9]{1}$)

...
或者:
regex:(^\d$)
regex:(^\d)$
regex:^(\d)$
regex:^(\d{1})$

如果想检索2位数字那就把{1}改成{2},依次类推
regex:(^[0-9]{2}$)
regex:^(\d{2})$

...

如下图所示,检索结果只有4502个,大大的提升效率(后续检索表达式不再逐一截图了,各位可以自行修改表达式进行尝试!)
在这里插入图片描述

3.使用转义字符\,转义符号.

4.想要检索某个文件夹下面的文件

那就直接在搜索框内输入文件路径,点击空格再添加相应的正则表达公式。
需要说明的是,在进行检索的过程中,如果检索的路径中包含子文件夹,那么如何排除子文件夹的遍历结果呢?只需要在需要检索的路径前面添加一个parent:[需要检索的路径],如下所示:

parent:C:\Users\XXX\Desktop\

上述代码只会检索到桌面上的文件和文件夹,子文件夹内的内容将不会被检索到。

4.如何进行重命?(本文重点介绍内容

打开Everything,在搜索框内输入需要重命名的文件路径,根据需求设置检索的正则表达式,就会显示搜索的文件了。
选中需要重命名的文件,右键/重命名即可弹出重命名的窗口。

首选筛选区文件(在右上角可以选择文件类型,也可直接写在搜索框内)

例1:
回到以文章开头的问题,如何进行文件重命名?

regex:(^\d)\p{Han}+\d{2}\.jpg
正则表达式说明
(^\d)表示以1位数字开头
\p{Han}+1个或者多个汉字符号(注意*表示0个或者多个)
\d{2}匹配两位数字
\.jpg匹配后后缀名为.jpg,\是为了转义.

例2:

对比类型看图理解
添加parent:在这里插入图片描述
不添加parent:在这里插入图片描述
重命名在这里插入图片描述

这里我们讲一下()保存子表达式的匹配的用法【着重理解的内容】。
在这里插入图片描述

说明:
原始文件名称的表达可以理解为二次检索,在第一次检索的基础上在进行检索,满足要求的就可以基于规则进行重命名。

例如:
(^\d{2})(\p{Han}+)(\d{2,})(\.jpg)$
上述表达是中:
(^\d{2})是两位数字。在新命名的表达式中对应的就是\1
(\p{Han}+)匹配1个或多个汉字。在新命名的表达式中对应的就是\2
(\d{2,})至少匹配2位数字;在新命名的表达式中对应的就是\3
(\.jpg)$匹配后缀为.jpg的文件;在新命名的表达式中对应的就是\4
\0默认的是原始文件名。
同时满足上述要求的是:

01测试数据比52.jpg
12比423.jpg
12比423.jpg

因此新文件名的表达是为00\1\2\4
重命名后的的文件前面会添加00,同时去掉后面的数字,重命名后的结果为

0001.测试数据比.jpg
0012.比.jpg
0012.比.jpg

其余的不符合正则表达是的规则,因此不进行重命名!
整体的思想(个人的看法)是使用正则表达式将原始的文件名称进行分段,然后使用\0-\9进行拼接,类似与python列表的切片

至此问题完美解决,不知我讲的清不清楚,如有疑问,欢迎留言讨论,我会继续完善我的文章内容。


五、小结

  • \p{Han} 是一个 Unicode 字符类,表示中文汉字。在正则表达式中使用 \p{Han} 可以匹配任何属于 Unicode 汉字类别(如中文、日文或韩文等东亚语言中的汉字)的字符。

  • 正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据。在很多语言(如 JavaScript、Python、Java、Perl 等)中都有嵌入,了解并熟练运用正则表达式,便得心应手。

  • Everything是一款功能强大且易于使用的文件搜索工具,结合正则表达式使用可以达到事半功倍的效果。

    • 详细的使用说明请参见博主sy670733的文章Everything使用详解
    • 请参阅博主gaheadus的文章Everything搜索_使用方法
  • 小编系需要说的是数据安全的问题,Everything虽然好用,如果设置不当,将会导致信息泄露,因此在不明确具体功能的情况下,不要随意点击。以下是关于Everything信息安全的介绍,感兴趣的小伙伴可以看一下,做到心中有数。

    • 注意!Everything 设置不正确会泄露隐私
    • 用Everything下可能导致的信息泄露
    • Everything在后渗透阶段的威力
    • 后渗透:Everything内网食用方法

文章编写不易,欢迎一键三连!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/886878.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT将QBytearray的data()指针赋值给结构体指针变量后数据不正确的问题

1、问题代码 #include <QCoreApplication>#pragma pack(push, 1) typedef struct {int a; // 4字节float b; // 4字节char c; // 1字节int *d; // 8字节 }testStruct; #pragma pack(pop)#include <QByteArray> #include <QDebug>int main() {testStruct …

基于VUE的在线手办交易平台购物网站前后端分离系统设计与实现

目录 1. 需求分析 2. 技术选型 3. 系统架构设计 4. 前端开发 5. 后端开发 6. 数据库设计 7. 测试 8. 部署上线 9. 运维监控 随着二次元文化的兴起&#xff0c;手办作为一种重要的周边产品&#xff0c;受到了广大动漫爱好者的喜爱。手办市场的需求日益增长&#xff0c;…

Android-Handle消息传递和线程通信

本文为作者学习笔记&#xff0c;如有误&#xff0c;请各位大佬指点 目录 一、同步异步 二、Java多线程通信 三、Handler是什么 四、Handler相关的类 五、Handler常用方法 1. 发送消息 2. 接收处理消息 3. 切换线程 六、使用Handler 使用Handler更新UI 使用Handler延…

electron教程(三)窗口设置

在main.js文件中&#xff0c;创建窗口时会设置窗口的大小&#xff0c;其实还有很多其他属性&#xff0c;可以根据实际需求选择设置&#xff0c;但部分属性存在局限性&#xff0c;官网也有明确告知&#xff1a;自定义窗口 | Electron (electronjs.org) 项目文件目录如下&#x…

Windows安装Vim,并在PowerShell中直接使用vim

大家好啊&#xff0c;我是豆小匠。 这期介绍下怎么在windows的PowerShell上使用vim&#xff0c;方便在命令行里修改配置文件等。 先上效果图&#xff1a; 1、下载Vim GitHub传送门&#xff1a;https://github.com/vim/vim-win32-installer/releases 选择win-64的版本下载即可&…

信息技术网络安全政策制定

为什么要制定网络安全政策&#xff1f; 通常&#xff0c;公司并不认为需要制定网络安全政策。现有的政策是为了保护公司的资产&#xff0c;而数据也是一项资产。 网络安全政策的真正必要性很简单&#xff1a;网络安全并不像锁门或不偷公司笔那么简单。在许多情况下&#xff0…

HTML的修饰(CSS) -- 第三课

文章目录 前言一、CSS是什么&#xff1f;二、使用方式1. 基本语法2. 引入方式1.行内式2.内嵌式3. 链入式 3. 选择器1. 标签选择器2.类选择器3. id选择器4. 通配符选择器 4. css属性1. 文本样式属性2. 文本外观属性 5. 元素类型及其转换1. 元素的类型2. 元素的转换 6.css高级特性…

【Java的SPI机制】Java SPI机制:实现灵活的服务扩展

在Java开发中&#xff0c;SPI&#xff08;Service Provider Interface&#xff0c;服务提供者接口&#xff09;机制是一种重要的设计模式&#xff0c;它允许在运行时动态地插入或更换组件实现&#xff0c;从而实现框架或库的扩展点。本文将深入浅出地介绍Java SPI机制&#xff…

08_OpenCV文字图片绘制

import cv2 import numpy as npimg cv2.imread(image0.jpg,1) font cv2.FONT_HERSHEY_SIMPLEXcv2.rectangle(img,(500,400),(200,100),(0,255,0),20) # 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 line type cv2.putText(img,flower,(200,50),font,1,(0,0,250)…

【AI学习】Mamba学习(二):线性注意力

上一篇《Mamba学习&#xff08;一&#xff09;&#xff1a;总体架构》提到&#xff0c;Transformer 模型的主要缺点是&#xff1a;自注意力机制的计算量会随着上下文长度的增加呈平方级增长。所以&#xff0c;许多次二次时间架构&#xff08;指一个函数或算法的增长速度小于二次…

国外电商系统开发-运维系统批量添加服务器

您可以把您准备的txt文件&#xff0c;安装要求的格式&#xff0c;复制粘贴到里面就可以了。注意格式&#xff01; 如果是“#” 开头的&#xff0c;则表示注释&#xff01;

【Qt】控件概述 (1)—— Widget属性

控件概述 1. QWidget核心属性1.1核心属性概述1.2 enable1.3 geometry——窗口坐标1.4 window frame的影响1.4 windowTitle——窗口标题1.5 windowIcon——窗口图标1.6 windowOpacity——透明度设置1.7 cursor——光标设置1.8 font——字体设置1.9 toolTip——鼠标悬停提示设置1…

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频&#xff0c;一期视频将常用配置和用法梳理清楚&#xff0…

鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息

本文将通过MethodChannel获取设备信息&#xff0c;以此来演练MethodChannel用法。 建立channel flutter代码&#xff1a; MethodChannel methodChannel MethodChannel("com.xmg.test"); ohos代码&#xff1a; private channel: MethodChannel | null nullthis.c…

openpnp - 图像传送方向要在高级校正之前设置好

文章目录 openpnp - 图像传送方向要在高级校正之前设置好笔记END openpnp - 图像传送方向要在高级校正之前设置好 笔记 图像传送方向和JOG面板的移动控制和实际设备的顶部摄像头/底部摄像头要一致&#xff0c;这样才能和贴板子时的实际操作方向对应起来。 设备标定完&#xf…

加油站智能视频监控预警系统(AI识别烟火打电话抽烟) Python 和 OpenCV 库

加油站作为存储和销售易燃易爆油品的场所&#xff0c;是重大危险源之一&#xff0c;随着科技的不断发展&#xff0c;智能视频监控预警系统在加油站的安全保障方面发挥着日益关键的作用&#xff0c;尤其是其中基于AI的烟火识别、抽烟识别和打电话识别功能&#xff0c;以及其独特…

V2M2引擎源码BlueCodePXL源码完整版

V2M2引擎源码BlueCodePXL源码完整版 链接: https://pan.baidu.com/s/1ifcTHAxcbD2CyY7gDWRVzQ?pwdmt4g 提取码: mt4g 参考资料&#xff1a;BlueCodePXL源码完整版_1234FCOM专注游戏工具及源码例子分享

[Cocoa]_[初级]_[绘制文本如何设置断行效果]

场景 在开发Cocoa程序时&#xff0c;表格NSTableView是经常使用的控件。其基于View Base的视图单元格模式就是使用NSCell或其子类来控制每个单元格的呈现。当一个单元格里的文字过多时&#xff0c;需要截断超出宽度的文字&#xff0c;怎么实现&#xff1f; 说明 Cocoa下的文本…

[Go语言快速上手]函数和包

目录 一、Go中的函数 函数声明 多个返回值 可变参数 匿名函数 值传递和地址传递 函数执行顺序&#xff08;init函数&#xff09; 二、Go中的包 基本语法 主要包&#xff08;main package&#xff09; 导入其他包 包的作用域 包的使用 包名别名 小结 一、Go中的函…

[C++]使用纯opencv部署yolov11目标检测onnx模型

yolov11官方框架&#xff1a;https://github.com/ultralytics/ultralytics 【算法介绍】 在C中使用纯OpenCV部署YOLOv11进行目标检测是一项具有挑战性的任务&#xff0c;因为YOLOv11通常是用PyTorch等深度学习框架实现的&#xff0c;而OpenCV本身并不直接支持加载和运行PyTor…