在 Bash 中批量重命名文件但保留文件名的一部分

在 Bash 中批量重命名文件但保留文件名的一部分

我有大量 .jpg 文件,其中文件 ID 前面有多余的数据,我需要删除这些数据才能更好地为后续项目设置文件结构。如何在命令行或 Bash 中执行批量重命名(最好使用 Bash)

例如:A_file_name_f3xe3_1_60113520.jpg - (60113520 为 ID)变为:60113520.jpg

所有文件的 ID 前都有下划线,但名称中的其他位置有随机放置的额外下划线。

答案1

有一个命令特别适合这种情况:

rename -n 's/.*?(\d+.jpg$)/$1/' *.jpg

它已prename打开debian并且已派生,并且是perl可执行文件。

-n如果您的测试符合需要,则 移除开关。

要使其成为默认值(仍然debian和派生:

 update-alternatives --set rename /usr/bin/prename

答案2

使用以下内容:

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

这将删除 JPG 文件名中的所有内容,包括文件名中的最后一个下划线。描述如下这里在部分子字符串替换

${字符串//子字符串/替换}

替换所有匹配项$substring$replacement

就你的情况来说,replacement是空的。

相关内容