这是一个简单的在MAC终端中将指定文件夹的文件名进行批量修改的命令
比如:文件夹 media
中原本有三个视频文件夹:
想给每一个视频文件前面都添加一个共同的前缀 『abc』,具体命令如下:
for o in `ls`; do mv $o abc$o; done;
最终效果为:
命令解释:
for...in
为循环语句,整个语句格式分三部分:
1,第一部分设置循环变量和要执行的终端命令,for 变量名 in <终端命令>
,变量名可以任意指定,终端命令需要使用一对半角符号 ` 包裹。
2,第二部分为每次循环的执行语句, do mv $o abc$o
, 这里是执行文件重命名,$
符号是对前面变量的引用。前面的 abc
是普通字符。
以 abc1.mp4
举例,变量支持的扩展语法:
-
%
表示忽略字符串后面匹配的字符,$o
匹配完整文件名称,${o%.mp4}
表示忽略.mp4
后缀,只会匹配文件名abc1
。 - 使用冒号可以截取字符,有两种格式:
a,${变量名:开始位置:截取长度}
, 从左往右数位置,第一个字符的位置为0。位置和长度都必须大于0;
b,${变量名:开始位置,结束位置}
,第一个参数为大于等于0的任意值,第二个参数为正数表示从左往右截取掉几个字符,为负数表示从右往左截取掉几个字符。
3,第三部分 done
表示循环结束。
语句的每一个部分都必须以分号结束。