批量重命名图像文件

批量重命名图像文件

我有一个文件夹,里面有几张图片。我想将文件名全部转换为小写字母,然后删除所有出现的某些字符串。

例如,从此以后,BILD02_CMYK_freigestellt_RENDER_3D.jpg与单词相连的cmykrender3d和应该删除。_到目前为止,我有以下组合,但这将是第一个段落,仅删除第一个出现的位置,而不是每个。

// Rename names to lowercase
for file in *; 
do 
   mv "$file" "$file.tmp"; 
   mv "$file.tmp" "`echo $file | tr "[:upper:]" "[:lower:]"`"; 
done

// Remove cmyk from filename
// optimierung: macht es nur einmal bei einer datei - ----
for file in *; do mv "${file}" "${file/cmyk/}"; done
for file in *; do mv "${file}" "${file/freigestellt/}"; done
for file in *; do mv "${file}" "${file/-/_}"; done

答案1

rename -n '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg

这使用了珀尔重命名命令(也称为prenamefile-rename)。这是不是与 util-linux 中的命令混淆rename,后者具有完全不同的命令行选项和功能。

它首先使用 perl 的函数将文件名转换为小写lc(),然后删除您在文本或示例代码中提到的所有单词和字符。

-n选项会导致rename进行空运行 - 它只会向您显示如果您允许它会做什么。要使其真正重命名文件,请删除-n或将其替换-v为详细输出。

例如

$ touch BILD{00..05}_CMYK_freigestellt_RENDER_3D.jpg
$ rename -v '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg
BILD00_CMYK_freigestellt_RENDER_3D.jpg renamed as bild00.jpg
BILD01_CMYK_freigestellt_RENDER_3D.jpg renamed as bild01.jpg
BILD02_CMYK_freigestellt_RENDER_3D.jpg renamed as bild02.jpg
BILD03_CMYK_freigestellt_RENDER_3D.jpg renamed as bild03.jpg
BILD04_CMYK_freigestellt_RENDER_3D.jpg renamed as bild04.jpg
BILD05_CMYK_freigestellt_RENDER_3D.jpg renamed as bild05.jpg

相关内容