我想编写一个脚本来通过一些不同的规则重命名大量文件。我需要从某些字符串中删除特定字符串,然后通过正则表达式重命名其他字符串(其中一些将是我之前从中删除字符串的字符串),然后根据文件名中的数字重命名其他字符串。
一般来说,假设我有多个目录(数百个),它们通常看起来像这样:
1234-pic_STUFF&TOREMOVE_2000.tiff
1234-pic_STUFF&TOREMOVE_4000.tiff
1234-MORESTUFFTOREMOVE-012.jpg
1234-MORESTUFFTOREMOVE-037.jpg
1234-STUFF&TOREMOVE.pptx.pdf (don't ask about this one)
1234-ET.jpg
1234-DF.jpg
对于一个看起来像:
1234_smallNum.tiff
1234_bigNum.tiff
1234_smallNum.jpg
1234_bigNum.jpg
1234_CaseReport.pdf
1234_ET.jpg
1234_DF.jpg
我已经有使用 perl 脚本通过正则表达式重命名的 shell 脚本(我把它弄下来了,但我找不到它来引用它)。它们就像remove_stuff_to_remove.sh
and rename_case_reports.sh
,我可以 cd 到每个目录并通过在没有输入的情况下调用它们来单独执行它们。
但是,我不知道如何根据数字转换文件名(2000 和 012 到 smallNum;4000 和 037 到 bigNum;请注意这些数字差异很大,所以我不能使用范围或正则表达式;我必须比较数字。)
而且我不知道如何自动化整个过程,以便我可以从所有这些目录的根目录中调用一个脚本,它会为我完成所有这些事情。我非常了解正则表达式,但我对find
命令或一般的 shell 脚本做得不太好。
另外,我说的是 Bash,但实际上,如果这可以在 Java、C、Python、Ruby 或 Lisp 中更好地完成,我对这些语言的了解要好得多,我只想在将这些文件转储给我之前找到一个解决方案(在接下来的一个月左右)...