Linux之mmv命令批量替换文件名(超详细-python结合mmv)

2023-11-18

一、前言

   近期工作忙,没有频繁的更新文章,在此感到抱歉,但写的文章内容还是帮助到了不少同学,感谢各位支持与关注。言归正传,以前遇到一个场景,需要批量替换文件名,当时第一个想法就是想使用python,写批处理,这也是一种思路,但经过大佬指点,在遇到一些情况的时候首先考虑是否能用linux命令去解决,linux命令很强大,能轻松处理很多事情,时间就是金钱,效率才是硬道理。

二、各系统安装mmv方法

2.1 CentOS

   在默认情况下,Centos7的网络源中没有mmv的安装包,我们需要先安装epel源,然后再安装mmv工具。

# centos
# 下载阿里云的epel源文件。
wget http://mirrors.aliyun.com/repo/epel-7.repo --directory-prefix=/etc/yum.repos.d
# 清除yum缓存,并重新生成缓存
yum clean all && yum makecache
# 安装mmv
yum -y install mmv

在这里插入图片描述

2.2 Ubuntu And Debain

# ubuntu and debain
apt -y install mmv
sudo apt -y install mmv

在这里插入图片描述

2.3 MacOS

# mac
brew install mmv

在这里插入图片描述

三、使用方法

3.1 常规使用

# 很强大还可以用正则表达式进行匹配
# 显示帮助信息
man mmv
# * 和正则表达式一样,多匹配的意思,一个*就代表一个要保留的#
mmv '*.log' '#1.jpg'
# 替换_log为空,其他保留
mmv '*_log.*' '#1.#2'
# 替换jp为jpe,其他都保留
mmv '*jp*' '#1jpe#2.log'
# ?要保留的字符串,比如1.jpeg.log 替换成 1_log.txt  , 三个?号匹配log
mmv '*.jpeg.???' '#1_#2#3#4.txt'

3.1.1 常规使用示例

# 先新建一些测试文件
touch {1..10}_log.log
# 然后输入常规使用命令即可看到效果

在这里插入图片描述

3.2 携带参数使用

# -m 替换完移动到指定目录
mmv '*.log' -m './aa/#1.jpg'
# -D 替换完移动到指定目录,目录不存在会自动创建
mmv './aa/*_log.*' -D './dd/#1.#2'
# 显示替换过程详细信息 
mmv './dd/*.jpg' '#1.txt' -v
# -c 替换完复制到指定目录
mmv '*.*' -c './dd/#1.#2'
# -o 替换完会覆盖同名文件
mmv '*.*' -o './dd/#1.#2'

3.2.1 携带参数使用示例

# 先新建一些测试文件
touch {1..10}_log.log
mkdir aa
# 然后输入携带参数使用命令即可看到效果

在这里插入图片描述

四、Python结合mmv对所有子目录下的文件进行批量替换文件名

4.1 Python结合mmv源码

代码就这么几行就能搞定,是不是很nice。

import os
# os.walk("./") ./指当前执行脚本的路径,你也可以写绝对路径,如:/tmp 或 c:\\users\\public
for maindir, subdir, file_name_list in os.walk("./"):
    command = "mmv '{0}/*-Englesh.log' '{0}/#1-Chinese.log' -v".format(maindir)
    os.system(command)

4.2 Python结合mmv示例

# 先新建一些测试文件
mkdir aa bb cc
touch ./aa/{11..20}-Englesh.log
touch ./bb/{21..30}-Englesh.log
touch ./cc/{31..40}-Englesh.log
vim pythonMMV.py
# 然后把代码复制进去,随后执行python文件
python pythonMMV.py

在这里插入图片描述
在这里插入图片描述

五、总结

   上面的命令用法自己多测试体会一下就懂了,学计算机的同学linux系统和linux命令还是需要熟悉,在某些工作场景这些命令能对你有很大的帮助,能快速解决你的问题,提升工作效率,后面也会更新关于linux相关知识,比如常用命令、系统搭建(各种服务器)、环境搭建(蜜罐、靶场、渗透工具)等等,持续关注学习更多知识。微信公众号搜索关注艺说IT,分享各种原创技术干货文章,对你有用的话请一键三连,感谢。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux之mmv命令批量替换文件名(超详细-python结合mmv) 的相关文章

  • 如何在生产环境中运行 spring boot 可执行 jar?

    Spring Boot 的首选部署方法是通过内部包含 tomcat 的可执行 jar 文件 它是从一个简单的开始java jar myapp jar 现在 我想将该 jar 部署到 EC2 上的 Linux 服务器上 我是否遗漏了某些内容
  • Python——“对象布局”

    有人可以描述以下异常吗 什么是 对象布局 以及它是如何定义的 谢谢 Traceback most recent call last File test gui py line 5 in
  • 如何在seaborn中记录比例

    我正在使用seaborn 绘制一些生物学数据 我想要一个基因相对于另一个基因的分布 在约 300 名患者中表达 并且以下代码工作正常 graph sns jointplot x Gene1 y Gene2 data data kind re
  • Py2Exe“缺少以下模块”

    使用 Py2Exe 时 我收到警告 例如 The following modules appear to be missing Crypto Crypto Cipher Crypto Hash Padding 由于找不到这些模块 导致 EX
  • Python:在 Plotly 中的图形上方创建注释空间

    我想在图中创建额外的注释空间 请参阅附图中的绿色区域 目前 y 轴定义了绘图的高度 我可以将绘图推到超出 y max 限制 在某个点 在图像中标记为红色 之后隐藏 y 轴吗 我尝试避免轴到达 评论部分 绿色 谢谢你 在此输入图像描述 htt
  • 什么时候使用变量类? (布尔变量、双变量、整数变量、字符串变量)

    Can t tkinter widget configure text our text 用于所有小部件 有什么好处 或者说主要使用目的 var cls tkinter StringVar tkinter widget configure
  • 安装pipenv导致pip3无法使用

    我安装了pipenv using pip3 install pipenv 这给了我错误ImportError cannot import name main 为了解决这个错误我遵循这些说明 https stackoverflow com q
  • 仅使用 NumPy einsum 处理上三角元素

    我使用 numpy einsum 来计算形状为 3 N 的列向量 pts 数组与其自身的点积 从而得到形状为 N N 的矩阵 dotps 与所有点积 这是我使用的代码 dotps np einsum ij ik gt jk pts pts
  • 可以在 __getitem__ 上使用多个参数吗?

    我正在尝试使用 getitem self x y 在我的 Matrix 类上 但在我看来它不起作用 我仍然不太了解如何使用 python 我这样称呼它 print matrix 0 0 是否有可能使用多个参数 谢谢 也许我可以只使用一个参数
  • python3导入找不到模块

    我正在尝试测试书中的一个例子 我得到了一个ImportError 该示例开始如下 from tkinter import from PP4E Gui Tools widgets import frame button entry 如果我放一
  • 如何根据 pandas 列注释散点图中的点

    Wanted Age 作为 x 轴 Pos 作为 y 轴 标签为 Player 名字 但由于某种原因 无法对点进行标记 Code import numpy as np import matplotlib pyplot as plt impo
  • 如何使用计划库运行异步函数?

    我正在使用discord py rewrite 编写一个discord 机器人 并且我想每天在特定时间运行一个函数 我对异步函数完全没有经验 而且我无法弄清楚如何在不使用 await 的情况下运行异步函数 这只是我的一段代码 这就是为什么有
  • 如何在 Docker 容器中运行 Nginx 而不停止?

    我在 Docker 容器上安装了 Nginx 并尝试像这样运行它 docker run i t p 80 80 mydockerimage usr sbin nginx 问题是 Nginx 的工作方式是 初始进程立即生成一个 Nginx 主
  • Python Asyncio 子进程永远不会完成

    我有一个简单的 python 程序 我用它来测试带有子进程的 asyncio import sys time for x in range 100 print processing s 100 x sys stdout flush prin
  • Gnu 时间和格式化输出

    我想使用 gnu time 来测量一些小 c 程序的运行时间 人 中写道 f FORMAT format FORMAT Use FORMAT as the format string that controls the output of
  • 如何像 urllib 这样的模拟/存根 python 模块

    我需要测试一个需要使用 urllib urlopen 它也使用 urllib urlencode 查询外部服务器上的页面的函数 服务器可能宕机 页面可能发生变化 我不能依赖它进行测试 控制 urllib urlopen 返回内容的最佳方法是
  • 如何将一个不相连的networkx图分成多个相互不相交但相连的图?

    我有一个networkx Graph代表一个对象graph https en wikipedia org wiki Graph discrete mathematics whose nodes https en wikipedia org
  • Pytorch ValueError:优化器得到一个空参数列表

    当尝试创建神经网络并使用 Pytorch 对其进行优化时 我得到了 ValueError 优化器得到一个空参数列表 这是代码 import torch nn as nn import torch nn functional as F fro
  • 在 Linux 上的 makefile 和 Makefile 之间进行选择

    我想在一个目录中同时使用 Makefile 和 makefile 进行 make 默认情况下 它将执行makefile 我可以选择执行 Makefile 吗 提前致谢 最简单的选择是使用 f make f Makefile From man
  • 为调色板图像分配不同的调色板索引

    我正在用 Python 和 Pygame 编写游戏 为此 图形将采用旧视频游戏机 如 NES 的风格 因此 图形由具有 2 位 4 色 图像的单个图块集文件组成 我希望在加载这些图像时能够为这些图像分配任意 4 色调色板 我想要做的是使用

随机推荐

  • 在Linux下安装GmSSL

    本文属于 GmSSL国密加密算法库使用系列教程 之一 欢迎查看其它文章 在Linux下安装GmSSL 一 关于GmSSL 二 解决与系统OpenSSL冲突的问题 三 GmSSL源码准备 四 编译与安装GmSSL 1 解压并进入目录 2 编译
  • 5分钟学会RocketMQ

    RocketMQ 简介 RocketMQ 是一个队列模型的消息中间件 具有高性能 高可用 高实时等特性 它并不支持JMS java消息服务 规范 但参考了JMS规范和kafak等的思想 Producer Consumer 队列都可以分布式
  • 吉布斯抽样

    吉布斯采样是生成马尔科夫链的一种方法 生成的马尔科夫链可以用来做蒙特卡洛仿真 从而求得一个较复杂的多元分布 吉布斯采样的具体做法 假设有一个k维的随机向量 现想要构造一条有n个样本的k维向量 n样本马尔科夫序列 那么 随机 初始化一个k维向
  • 联想拯救者笔记本加固态硬盘过程重点

    最近朋友嫌弃自己笔记本机械硬盘太慢 在我的蛊惑下买了块固态硬盘 想改善一下开机时间 本来以为很简单的事 没想到啊没想到 一 总的说一下 拯救者这款笔记本升级固态硬盘的思路 用ufi版本的U盘启动盘 我用的大白菜uefi版本 电脑的bosi下
  • vue修改图标以及项目名

    首先 打开这个文件 javascript
  • js实现图片任意拉伸_APICloud开发者进阶之路

    本文出自APICloud官方论坛 感谢论坛版主 东冥羽的分享 七牛云上传视频并截取第一帧作为视频的封面图 使用js上传 模块videoPlayer截取第一帧 有专门的截图模块 但是我使用的有点问题 可能是视频源的问题 canvas也能截取
  • VTK配置步骤(WIN7 64位 + VS2012 + VTK-5.10.1)

    前面的废话可以不看 我很啰嗦 由于项目中需要用到VTK 上周三就开始编译VTK源码 中间出现了一系列问题 首先是下载的高版本代码顺利编译后 自己新建的工程总是提示链接错误 尽管所有的库文件都加入了 还是不正确 之后下载了vtk较低版本5 8
  • 一文带你了解降压型稳压芯片原理

    一文带你了解降压型稳压芯片原理 导读 在电路系统设计中 总是离不开电源芯片的使用 林林总总的电源芯片非常多 比如传统的线性稳压器7805 低压差线性稳压器 LDO 开关型降压稳压器 Buck DCDC 等 那么它们到底有什么区别呢 Exce
  • C# 基本语法

    C 基本语法 C 是一种面向对象的编程语言 在面向对象的程序设计方法中 程序由各种相互交互的对象组成 相同种类的对象通常具有相同的类型 或者说 是在相同的 class 中 例如 以 Rectangle 矩形 对象为例 它具有 length
  • java request获取数组

    获取单一参数 String hostName request getParameter host String url request getParameter url 获取参数数组 String carrier request getPa
  • Ubuntu 16.04 搭建Hadoop环境(to be continued)

    reference 1 Ubuntu上搭建Hadoop环境 单机模式 伪分布模式 by yinlung 2 Ubuntu11 10下安装Hadoop1 0 0 单机伪分布式 3 Ubuntu上搭建Hadoop环境 单机模式 伪分布模式 by
  • 2023养老服务人才状况调查报告

    导读 本次调查内容涉及养老服务人才的基本特征 待遇和保障状况 培训状况 职业发展状况等 调查显示 养老服务人才以女性为主 各类受访者中女性占比约82 3 养老服务人才队伍年龄结构偏大 41 55岁年龄段的受访者占比56 0 56岁及以上占比
  • 安装Java (JDK16)

    本文将在win10的环境下安装jdk16 配置环境变量 1 下载JDK 1 打开官网下载最新的JDK Java SE Development Kit JDK 2 选择对应的版本 3 双击下载的exe进行安装 在安装过程中可以改变安装位置也可
  • MyBatis-Generator插入删除数据返回-2147482646

    在使用MyBatis Generator自动生成的代码进行删除数据时 deleteByPrimaryKey 方法 返回的int 值为 2147482646 正常的逻辑是成功删除返回 1 失败返回 0 未删除数据 特意去官网看了这个方法的说明
  • JAVA 数组(一维数组)

    Java 语言中提供的数组是用来存储固定大小的同类型元素 即存储同种数据类型的多个值 1 声明数组变量和数组初始化 首先必须声明数组变量 才能在程序中使用数组 语法 dataType arrayRefVar 或 dataType array
  • King's Quest【POJ 1904】【Tarjan强连通分量】

    Once upon a time there lived a king and he had N sons And there were N beautiful girls in the kingdom and the king knew
  • CNN,RNN,LSTM区别

    一 CNN 卷积神经网络 在机器学习中 卷积神经网络是一种深度前馈人工神经网络 已成功地应用于图像识别 1 卷积神经网络 是一种前馈神经网络 人工神经元可以响应周围单元 可以进行大型图像处理 卷积神经网络包括卷积层和池化层 卷积神经网络包括
  • 盒子模型大详解

    文档流 网页是一个多层结构 设置样式也是一层一层设置的 最终我们看到的是最上面的那一层 文档流就是网页最底部 我们创建的元素默认都是在文档流中创建的 元素分为两种状态 在文档流 脱离文档流 元素在文档流的特点 块元素 1 独占一行 2 宽是
  • 手机iCloud储存空间已满,怎么解决?

    最近手机总是弹出iCloud储存空间已满 升级的话得花钱 以后再说的话 总感觉有点 不安 担心自己的照片啥的会存不了 所以特意查找了这种方法 如果有出现这种情况的朋友 可以试试 1 找出iCloud空间被哪些档案塞满 iiPhone或iPa
  • Linux之mmv命令批量替换文件名(超详细-python结合mmv)

    文章目录 一 前言 二 各系统安装mmv方法 2 1 CentOS 2 2 Ubuntu And Debain 2 3 MacOS 三 使用方法 3 1 常规使用 3 1 1 常规使用示例 3 2 携带参数使用 3 2 1 携带参数使用示例