用Go语言实现的批量重命名文件工具

今天早上想把文件传到网盘里,而且还想修改把文件名改成文件名的md5,一个一个修改比较麻烦。

最近一直在研究Go语言,该语言比较简洁,可以编译成可执行程序,所以就用Go语言写了一个小工具叫md5ren。

实现的功能是在要修改的文件夹中执行命令md5ren,达到的目标是将该文件夹下所有的文件以及文件夹都修改成原始名称的md5值,如果是文件,则保留原文件的后缀。

使用到的Go语言的功能有:

  • 列出一个文件夹下的所有文件
  • 判断文件类型,是文件还是文件夹
  • 写文件
  • 生成字符串的MD5值

列出一个文件夹下的所有文件

files, err := ioutil.ReadDir(dir)

判断文件类型

通过ioutil.ReadDir返回的结果为FileInfo类型的数据,FileInfo有IsDir方法,可以判断是否文件夹。

写文件

写文件可以使用ioutil.WriteFile来实现,代码如下:

ioutil.WriteFile(renLogFileName, []byte(renameLog), 0666)

计算字符串的MD5值

1 func GetMD5Hash(text string) string {
2     hasher := md5.New()
3     hasher.Write([]byte(text))
4     return hex.EncodeToString(hasher.Sum(nil))
5 }

完整代码在github中.

时间: 2024-10-11 12:29:58

用Go语言实现的批量重命名文件工具的相关文章

五种方法实现Linux批量重命名文件

五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. AD: Linux批量重命名文件会涉及到改变一个字母.改变一些相连字母.改变某些位置的字母.在最前面加上某些字母.或者改变字母的大小写.完成这里五个方法基本上就会解决了Linux批量重命名的工作. 1.我想把它们的名字的第一个1个字母变为"q",其它的不变 [[email protected] mailqueue]# for i in

通过DOS命令批量重命名文件

以下为提供的两种方法:遍历当前目录下的所有文件名以.avi结尾的文件,然后权限规则进行修改(规则含义请自行查找资料).第一种方法有缺陷,更改完所有的文件名后,会多改一次.请斟酌使用.第二种方法解决了第一个方法的不足. 方法一: 1 @echo off   2 setlocal enabledelayedexpansion   3    4 for /f "delims="  %%a in ('dir /a-d /s /b *.avi') do (   5     echo "

利用Python批量重命名文件(给非技术人员的Python实例参考)

转自https://www.cnblogs.com/brucex/p/python-rename-example.html 这一回我需要完成的任务是把"照片"目录下面的数百个以"数字+中文姓名.jpg"的文件批量重命名,我需要把"数字"删除,保留"中文姓名.jpg",手工改名将是一件繁琐无趣的事.很自然我想到了我一直很喜欢的Python,当然,在这里除了Python还可以用Perl.Ruby.PHP.DOS Batch.VBS

利用perl批量重命名文件

使用perl自带函数rename可以重命名文件名称,具体用法,rename $old_name, $new_name. 例如,要把文件名中“7--1_F03_2018-12-28.fsa”中的前缀“7--”去除. 1 use strict; 2 3 my $DIR_PATH = "./"; # current directory 4 opendir TEMP, ${DIR_PATH} || die "Can not open this directory"; 5 m

批量重命名文件

今天突然想给桌面换张壁纸,打开原来的壁纸文件夹,很多当时觉得不错的壁纸现在已经不能看了,删掉一些之后,壁纸文件的名称变得断断续续.当时下载时是按照数字顺序命名的,现在看上去多少有些别扭.于是突发奇想,能否批量给某一目录下的文件重命名,比如我现在的壁纸文件夹. 首先我想到应该要打开一个目录,猜想是否有opendir之类的函数?果然有!在头文件<dirent.h>下面: DIR* __cdecl __MINGW_NOTHROW opendir (const char*); 返回值是DIR*,查看D

一个Java写的批量重命名文件小程序

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣.比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟. import java.io.File; import java.sql.Date; import java.util.Scanner; public class RenameTool { boolean useDefaultName = false; boolean useDefa

批量重命名文件名称小软件

说在前面 先扯会,如果不是Android开发的,要使用本小软件,可以直接到下面正题 在Android开发中,有时会遇到大量文件需要重命名的情况,特别是一些图片文件.有两个同学遇到过这种情况,我暂时还没遇到,但这种情况以后肯定会遇到的. 可以用批处理命令(move,ren)来解决,但要一条一条写命令,写修改后的文件名,还要写原文件名.如果有些修改后的名称直接是a001.txt,a002.txt,a003.txt,--毫无疑问这样有规律的名称,用万能的Excel解决最快了,一个拖拉就搞定.以前也写过

linux 批量重命名文件

1. 分隔 >>split -l 5 data_out.sql test 2.重命名 >>for j in test*; do mv -v -- "$j" "$j.sql";done To export If it's an entire DB, then: $ mysqldump -u [uname] -p[pass] db_name > db_backup.sql If it's all DBs, then: $ mysqldump

VBS实现批量重命名文件并且操作前备份原有文件

'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0'' NAME: '' AUTHOR: Microsoft , Microsoft' DATE : 2014/7/9'' COMMENT: '批量修改文件夹下对应的所有文件名''==========