1

我想将很多文件重命名为他们的 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
)
4

0 回答 0