一、Mac内置功能
若仅是批量编号
,替换
,前缀
,后缀
的基础需求,Mac下直接全选右键重命名即可,更进阶的重命名需求请看二、三。
二、直接 命令行(sed)
2.1. 查看是否符合修改预期
find . -maxdepth 1 -name '*.mp4' | while read filename; do newfilename=`echo $filename | sed 's/^.....//'`; echo mv $filename $newfilename; done
解释:
find . -maxdepth 1 -name '*.mp4'
— 打印当前目录下所有mp4文件;
while read filename; do + done
— 将对来自 find
的每一行进行循环操作(文件名保存在filename变量中);
's/^.....//'
— 正则匹配前五个字符,用s命令替换; s/old/new/
old替换为new
echo mv $filename $newfilename
回显命令
2.2. 管道将向终端回显建议的命令
find . -maxdepth 1 -name '*.mp4' | while read filename; do newfilename=`echo $filename | sed 's/^.....//'`; echo mv $filename $newfilename; done | bash
三、借助 工具(rename)
3.1. 装rename
Mac系统:brew install rename
Debian系统:sudo apt-get install rename
3.2. rename [-v] [-n] [-f] perlexpr [filenames]
解释:
-v(verbose)打印被成功重命名的文件
-n(no-act)只显示将被重命名的文件,而非实际进行重命名操作
-f(force)覆盖已经存在的文件
perlexprPerl语言格式的正则表达式
files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读
3.4. 替换Substitute
rename 's/Sam3/Stm32/' *.nc # 1.将所有*.nc文件中Sam3替换成Stm32
rename 's/\.bak$//' *.bak # 2.去掉文件后缀名(比如去掉.bak)
rename 's/[ ]+//g' * # 3.去掉文件名的空格
rename 's/^/yes/' * # 4.文件开头加入字符串(比如yes)
rename 's/$/yes/' * # 5.文件末尾加入字符串(比如yes)
rename 'y/A-Z/a-z/' * # 6.将文件名改为小写
3.5. 实践
~/Downloads/123
✦ ❯ l
001 - 深度学习基础介绍 机器学习27 总结.mp4
002 - 深度学习基础介绍 机器学习26 Hierarchical clustering 层次聚类.mp4
003 - 深度学习基础介绍 机器学习25 Kmeans应用.mp4
004 - 深度学习基础介绍 机器学习24 Kmeans算法.mp4
005 - 深度学习基础介绍 机器学习23 回归中的相关性和R平方值应用.mp4
006 - 深度学习基础介绍 机器学习22 回归中的相关度和决定系数.mp4
~/Downloads/123
✦ ❯ rename 's/[0-9]{3} - /' *
Substitution replacement not terminated at (eval 2) line 1.
~/Downloads/123
✦ ❯ rename 's/[0-9]{3} - //' *
~/Downloads/123
✦ ❯ l
深度学习基础介绍 机器学习22 回归中的相关度和决定系数.mp4
深度学习基础介绍 机器学习23 回归中的相关性和R平方值应用.mp4
深度学习基础介绍 机器学习24 Kmeans算法.mp4
深度学习基础介绍 机器学习25 Kmeans应用.mp4
深度学习基础介绍 机器学习26 Hierarchical clustering 层次聚类.mp4
深度学习基础介绍 机器学习27 总结.mp4
使用 sed 命令替换/删除 文本字符的 20 个例子
sed
sed 's/a//' file #01. 删除指定的字符,比如 'a'
sed 's/^.//' file #02. 移除每一行的第一个字符
sed 's/.$//' file #03. 移除每一行的最后一个字符
sed 's/^.//;s/.$//' file #04. 同时移除每一行的第一个字符和最后一个字符
sed 's/^F//' file #05. 移除每一行的匹配到的第一个字符,如果没有匹配不做处理
sed 's/x$//' file #06. 移除每一行的匹配到的最后一个字符,如果没有匹配不做处理
sed 's/...//' file #07. 删除每一行的第一到第三个字符
sed -r 's/.{4}//' file #08. 删除每一行的第一个到第 n 个字符
sed -r 's/.{3}$//' file #09. 删除每一行的最后 n 个字符
sed -r 's/(.{3}).*/\1/' file #10. 除了每一行的第一到第n个字符外,剩下的都要删除
sed -r 's/.*(.{3})/\1/' file #11. 删除每一行所有字符且保留结尾的n个字符
sed 's/[aoe]//g' file #12. 删除每一行匹配到的多个字符
sed 's/lari//g' file #13. 删除匹配到的字符串
sed 's/u//# 2' file #14. 删除每一行匹配到的第 n 个字符
sed 's/a.*//' file #15. 删除每一行以某个字符开头的子字符串
sed 's/[0-9]//g' file #16. 删除文件中每一行中出现的所有数字
sed 's/[a-z]//g' file #17. 删除每一行中出现的小写字符
sed 's/[^a-z]//g' file #18. 删除除了小写字符之外的其他所有字符
sed 's/[a-z][A-Z][0-9]//g' file #19. 删除每一行所有的字母和数字字符
sed 's/[uU]//g' #20. 删除每一行的一个字符,且忽略大小写
正则表达式去反:
^((?!你的正则表达式).)*
本文含有隐藏内容,请 开通VIP 后查看