gpt4 book ai didi

bash - 从字符串中删除最后 n 个字符的单行方法

转载 作者:行者123 更新时间:2023-11-29 09:36:12 25 4
gpt4 key购买 nike

我在一个文件夹中有一堆 photo.jpg.png 格式的文件,对于这个文件夹中的每张照片,我想替换 .jpg.png.png。我如何从终端执行此操作?

我有基本的 Python 和 bash 背景,所以我知道我想做这样的事情:

 $ for i in *.png; do mv $i $i[:-8]; done
$ for i in *; do mv $i $i.png; done

但是为了删除每个文件名的最后 8 个字符,我应该用什么替换 Pythonic [:-8]

编辑 我现在意识到,从字符串末尾算起的子字符串会更好。有没有办法做到这一点?

最佳答案

您可以使用模式扩展:

for f in *.jpg.png; do mv -v "$f" "${f/.jpg.png/.png}"; done

虽然您可能仍然对像 foo.jpg.png.gif 这样的文件名有疑问。

如果你真的想去掉最后 7 或 8 个字符,你可以使用子字符串扩展:

for f in *.jpg.png; do mv -v "$f" "${f:0:-7}png"; done

请注意,在子字符串长度中使用负数需要 bash 版本 4 或更高版本。

关于bash - 从字符串中删除最后 n 个字符的单行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49241902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com