在 Mac 上截断文件名

在 Mac 上截断文件名

我有一个包含 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%% - *}删除从第一次出现开始的所有内容-

相关内容