bash - 如何使用 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 个字符,并且由于文件长度会改变,我希望从文件类型开始并计算左侧。谢谢你的帮助!
解决方案
使用负偏移量从末尾开始计数。
mv "$f" "${f: -12}"
请注意,当使用负偏移量时,您必须在偏移量之前放置一个空格。否则它被解释为${f:-defaultvalue}
但似乎你忘了计算.MP4
后缀,你想要最后 16 个字符。
mv "$f" "${f: -16}"