我有大量 .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
是空的。