我想将许多文件重命名为其md5。我已经编写了一个bash脚本来完成这项工作,并使用git-scm(https://git-scm.com/)在Windows中运行该脚本。
find WorkFolder -type f -iname '*.tif' -print0 |
while IFS= read -r -d '' file; do
hash=$(md5sum "$file"|cut -c1-32)
echo -e "\"$hash\"\t\"$file\"" >>dataPic.csv
mv "$file" "OutputFolder/$hash.tif"
done
此脚本执行2个工作。 1.计算文件的md5,将文件重命名为md5.tif,然后将结果文件移至输出文件夹。无论文件放在子文件夹中有多深。如果两个文件具有相同的md5,则两个已删除源文件夹中的两个源仅保留一个。 2.还将新行写入csv文件,每行的格式为
<file's md5> <tab> <file's original full path and name>
它运作良好,但是由于文件越来越多,所以现在处理速度太慢了。
我正在尝试编写批处理来完成相同的工作。但是我不知道certutil -hashfile MD5
是否真的比md5sum更快或更慢。写批处理也比我想象的要难。
我写了一个草稿:
FOR /r .\sourcefolder %%i in (*.tif) do (
FOR /F %%F IN (`certutil -hashfile "%%i" SHA256 | findstr /V ":"`) DO (SET md5=%%F)
set /a line=%md5%+" "+%%i
echo %line% >>log.txt
rename %%i .\outputfolder\%md5%.tif
)