

用 zmv 批量重命名文件
source link: https://lenciel.com/2022/10/renaming-with-zmv/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我看电影主要靠下载1。
这些年,好的电影网站越来越少:因为版权管得严了,似乎没啥好抱怨的。
还在经营的,很多都会在压片子的时候,加点儿自己的广告,顺道改改文件名:都要吃饭嘛,似乎也没啥好抱怨的。
但我每次要去看电影的时候,无论电脑还是投影仪,就经常陷入下图所示的「我究竟下了些什么」的迷茫中:

因为我用 zsh,所以就拿它自带的 zmv 来解决这个问题。
加载zmv
首先你需要加载这个命令:
$ which zmv
zmv not found
$ autoload -Uz zmv
$ which zmv
zmv () {
# undefined
builtin autoload -X
}
这里的 undefined
看起来可能有点吓人,但其实在 zsh 的 autoloading functions 里这是很常见的 annotation。
如果你想让它常驻可以:
$ vi $HOME/.zshenv
autoload zmv
zmv 的基础语法是:
zmv 'input_pattern' 'output_pattern'
举个例子,处理照片的时候我们经常要遍历整个目录和子目录,把所有的 JPEG
后缀的文件改成 jpeg
。用 zmv 你只需要2:
$ zmv -n -W '**/*.JPEG' '**/*.jpeg'
而如果是生写 bash 你大概需要:
$ for file in **/*.JPEG; do mv $file ${file/.JPEG/.jpeg}; done;
pattern/group
要解决我遇到的问题,当然可以使用粗暴点儿的办法,比如去掉开头的 8 个字符:
$ zmv -n '*' '$f[9,-1]'
但实际上,zmv 真正强大在于它支持匹配和分组:需要注意的是,虽然声明 group 也是用括号,但它用的不是正则而是glob。
比如你想去掉文件里面所有的[]
起来的前缀,可以写成:
$ zmv -n '\[*\](*).(mkv|mp4)' '$1.$2'
mv -- '[电影天堂www.dytt89.com]灰影人-2022_蓝光中英双字.mp4' 灰影人-2022_蓝光中英双字.mp4
mv -- '[电影天堂www.dytt89.com]狩猎-2022_BD韩语中字.mp4' 狩猎-2022_BD韩语中字.mp4
这里的意思是,用[]
扩起来的任何字符后面跟的如果是.mkv
或者.mp4
后缀,则把文件名作为第一个分组,把后缀作为第二个分组,用 $1.$2
引用这两个分组来生成修改后的文件名。
更多 zmv 的用法可以看它的文档。
Recommend
-
31
-
9
大家好,又到了Python办公自动化(偷懒)专题。 今天介绍的案例是如何利用Python来自动化移动、修改、重命名文件/夹,这样的操作在日常办公中经常会用到,若能掌握用Python实现将会大大提高效率! 所以我希望能够通过这篇文章来让大家了解...
-
6
Python批量重命名压缩文件 2021年1月19日 | 最近更新于 下午7:35工作上遇到一个问题,QA提供的1000多个压缩文件名称命名不规范,服务器做C++覆盖率产物解析,压缩文件文件名必须和解压之后的文件名一致,所以只是修改压缩文件名称行不通,...
-
4
使用rename批量重命名文件 在linux上我们一般用 mv 命令来对文件进行重命名操作,但是 mv 一次只能对一个文件进行重命名,对批量文件进行重命名就比较麻烦了。 一直以来我都是写一段shell循环或者跟 xargs...
-
9
V2EX › Linux 如何理解 mv 重命名改变了文件的 ctime? lolcat · 2 小时 26 分钟前 · 338 次点...
-
9
WordPress上传文件自动重命名 WordPress上传文件默认是不改变文件名称的,可对中文文件名而言,某些系统、某些浏览器访问是会出现问题滴,那么怎样让Wordpress上传文件自动重命名呐? 以wordpress 3.5.1 为例,打开“wp-admin/includes...
-
3
linux 如何在Linu中重命名文件和目录 重命名文件和目录是您经常需要在Linux系统上执行的最基本任务之一。重命名单个文件很简单,但一次重命名多个文件可能是一个...
-
2
Moving files in ZSH - The wonderful world of zmvPosted on November 12, 2019Latest Update: September 04, 2020From time to time I find myself trying to move a batch of files that have a si...
-
3
V2EX › 分享创造 golang 做了一个批量重命名桌面软件
-
5
HeoGPT生成中...我们习惯使用command+R来修改图层和画板的名称,在上古时期我们想要批量重命名图层还需要使用插件才能完成这个工作,例如我们常见的插件Rename It
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK