首页 > 解决方案 > 保持9个字符不变并重命名文件夹中的所有文件

问题描述

我是 Bash 的新手,并尝试重命名文件夹中的文件,保持前 9 个字符完整并删除之后的任何内容。

abc123456olda.jpg > abc123456.jpg

我写了这个;

for file in *
do
    echo mv "$file" `echo "$file" | sed -e 's/(.{9}).*(\.jpg)$/$1$2/' *.jpg
done

没有让它工作。有人可以指导我做错了什么吗?

标签: bash

解决方案


你不远了,试试这个:

for file in *.jpg; do
    echo mv "$file" "$(echo "$file" | sed -E -e 's/(.{9}).*(\.jpg)$/\1\2/')"
done

有一些更正。一个重要的是$1$2应该是\1\2,并且您需要-E标志来 sed 以便它理解带括号的分组。

一旦你看到命令没问题,echo从第二行中删除,以便mv实际执行。


推荐阅读