我有一个包含 1000 个文件的目录,名称如下
2019-07-21-17-50-06 - 123 - abc - xyz.zzz
我只需要最左边的 19 个字符,即日期和时间。
Mac 上没有重命名命令,所以环顾四周,我发现 mv 命令也可以工作,例如从这里开始截断文件名这给了我这个
for i in *.mp3; do mv "$i" "${i:19}"; done
但我认为它是从右侧修剪的,而不是从左侧修剪的。
如何更改此命令以保留最左边的 19 个字符加上后缀?
谢谢!
答案1
${i:19}
是从第 19 个(好吧,第 20 个 - 0 索引起作用)字符开始的子字符串。从开头算起 19 个字符的子字符串是${i:0:19}
。
如果所有文件的扩展名前都有 19 个字符:
for i in *; do mv "$i" "${i:0:19}.${i##*.}"; done
${i##*.}
删除文件名中直到(并包括)最后一个的所有内容.
,仅保留扩展名。
Perl 重命名可从 Homebrew 获得:
% brew info rename
rename: stable 1.600 (bottled), HEAD
Perl-powered file rename script with many helpful built-ins
http://plasmasturm.org/code/rename
答案2
您可以使用${i%% - *}
删除从第一次出现开始的所有内容-
。