Filetools工具
本文为原创文章,转载注明出处,欢迎关注网站https://hkvision.cn
filetools工具
本人用golang
写的一个小工具,用于对文件进行操作,项目地址在这:filetools
安装
暂时无法直接提供编译好的二进制文件,等我啥时候有时间了研究下CI工具再说。
现在已经可以提供二进制下载了,去github release上找就行,想安装最新版的可以从源码安装
|
|
源码安装需要你有go环境,目前没有测试最低版本,1.11+都是可以的。
使用
最初写这个工具的设想是将很多命令整合到一起,像cp
,mv
,rm
等,所以所有功能均使用子命令的方式进行提供,可以用-h
来查看使用帮助。对于子命令也可以在后面加上-h
查看子命令使用帮助。
中文帮助
项目已经可以实现国际化,设置正确环境变量即可看到中文帮助。
设置LANG环境变量即可
|
|
已实现的功能
comapre
compare
用于比较两个目录的不同,使用golang的os.Stat
函数获取文件信息,比较大小和文件名两方面,加上-c
参数则会打开每个文件进行详细比较。比较信息将打印在控制台,包括new file, modified file(文件名一样但是大小不一样或者), deleted file。
使用场景是在进行目录复制的时候,如果中途断了,或者一些其他情况,导致我们无法判断目录是否复制成功,可以进行比较。
copy
copy
将一个文件或者目录拷贝到其他地方,这个命令最激动人心的地方是有进度条,加上-pb
即可,有进度条的情况下会先统计源目录,因此速度会慢一些,我自己使用的时候是40w个文件统计需要花一段时间,不过不太长,可以接受。
使用场景是在对大文件,大目录进行拷贝的时候可以加上进度条,灰常舒爽
info
info
命令会输出文件或目录的一些信息,这些信息包括文件名,文件类型(真实类型),文件大小(真实目录大小),权限等,v0.21版本之后这个命令重构了,用了协程之后速度飞起(绝对比Windows自带的快)
使用场景是探测真实文件类型,在Linux下统计真实目录大小
rename
rename
命令会重命名文件,加上-k
参数可以保持原有文件(类似copy,但不支持目录)
使用场景略
list
list
命令会列出目录下的所有文件,这个命令可以排序,可以限制输出到控制台的数量
使用场景是对某目录下的大文件进行查找,快速定位哪些文件占用了较多的磁盘空间
delete
delete
命令是用来删除目录或者文件的,默认情况下这个命令执行软删除,直接删除可以用-hd
参数。软删除会删除到~/.ft-trash
目录下
正如我在github上写的那样,本来我想通过调用windows api来实现在windows环境下软删除是移动到回收站的功能,但是找了一圈发现网上推荐的方法是调用
SHFileOperationA
这个函数(DeleteFile
函数我试过,直接删除了),但是这个函数的参数是一个C结构体,这意味着,要么我装个VS,用cgo来实现,要么我弄个Go结构,模仿这个结构,然后用cgo的那一套,unsafe.Pointer
拿到指针,直接调用dll。前一种方案很传统,实现起来问题不大,但是那就正式使用cgo,这是我不能容忍的,本来这个项目我就打算用纯go写,后一种方案我没尝试过,理论上来说是可以的,但是最大的问题是go结构能否保证和c结构一样,即使我每一个字段都按照c结构来,还有内存对齐的问题,还有32位和64位的问题,总之这个解决方案即使成功了,可能也就只能我自己用用,想有普适性很困难。另外考虑到所有系统实现一致性的问题,我还是决定不扔回收站了。PS: 可能有人会问了,说我直接找到回收站在什么地方然后移过去不就行了。我考虑过这个问题,应该说我最先想到的就是这个方案,但是我发现Windows的回收站比想象中复杂,最大的问题是文件命名,大家应该知道回收站里面的文件是可以重名的,然后我跑去回收站一看,呵呵,里面真实的文件名是一串生成的乱码,也会带名字但是前缀是乱码,咱也不知道这个乱码咋生成的,网上也没找到资料,如果有谁知道这串码怎么生成的,请告诉我,我会用go实现的。
未来会开发几个针对~/.ft-trash
目录的功能,例如查找文件,清理回收站等
move
move
用来移动文件或目录,和mv
差不多,但是就是有些报错和mv
不一样,也可能是我测试的平台不一样,总之我尽可能的考虑了一些极端情况,大家使用过程中遇到了什么bug请告诉我。
server
v0.2.2
版本新增子命令,可以打开一个简单的基于HTTP的文件查看和上传服务,用于在局域网范围内的文件传输,主要目标是在进行类似部署操作时,不再需要安装WinSCP
等工具,直接使用浏览器即可,方便客户端和服务器进行文件传输,可以使用BasicAuth
,保证基本的安全,不建议长时间开启服务,需要时使用即可。
未来的打算
未来将提供更多的文件相关的功能,要是有什么好的建议可以提issues。
目前打算再加一个支持正则的功能,这样前面的命令可以实现更丰富的功能
- 原文作者:HaoKunT
- 原文链接:https://hkvision.cn/2019/09/12/filetools%E5%B7%A5%E5%85%B7/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。