如何使用 Mac 终端从不同长度的文件名中删除除最后 12 个字符以外的所有字符?

How do I remove all but the last 12 characters from filenames of different lengths using Mac terminal?

如何从这些文件中删除最后 12 个字符,并将其更改为:

RE0001_cdea_3000_001_000_0000.MP4

175c_3000_000_000_0000.MP4

为此:

001_000_0000.MP4

000_000_0000.MP4

我猜是 for f in *; do mv "$f" "${f:12}"; done 之类的倒数。但这删除了前 12 个字符,并且由于文件长度会改变,我希望从文件类型开始并计算左边。感谢您的帮助!

使用负偏移从末尾开始计数。

mv "$f" "${f: -12}"

请注意,当使用负偏移时,您必须在偏移前加上 space。否则它被解释为 ${f:-defaultvalue}

但是你好像忘了计算.MP4后缀,你想要最后16个字符。

mv "$f" "${f: -16}"