首页 > 解决方案 > 如何使用 Mac 终端从不同长度的文件名中删除除最后 12 个字符之外的所有字符?

问题描述

如何从这些文件中删除最后 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 个字符,并且由于文件长度会改变,我希望从文件类型开始并计算左侧。谢谢你的帮助!

标签: bashterminalrenamefilenames

解决方案


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

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

请注意,当使用负偏移量时,您必须在偏移量之前放置一个空格。否则它被解释为${f:-defaultvalue}

但似乎你忘了计算.MP4后缀,你想要最后 16 个字符。

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

推荐阅读