600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Mac OS X 环境下利用命令行快速查找重复的文件

Mac OS X 环境下利用命令行快速查找重复的文件

时间:2020-06-27 04:33:32

相关推荐

Mac OS X 环境下利用命令行快速查找重复的文件

在工作生活当中,我们很可能会遇到查找重复文件的问题。

比如博主我的苹果电脑(MacBook Pro 120G SSD)空间不够用了,想把电脑里的重复的文件删除,只保留一份。

有两个好处,一是,主要目标是节省磁盘空间,不要总是提示“您的启动磁盘几乎已满” 。

Mac os x 频繁的磁盘几乎已满提示

二是,把积年已久的文档重新梳理一遍,尤其是下载目录“~/Doanload”下的文件,默认都下载在这里,Mac os X又没有剪切功能,所以习惯性又拷贝到其他目录,导致下载目录占了接近一半的硬盘空间。

先上代码:

第一步:先找出哪些文件的hash是重复的。

$ find . -not -empty -type f -exec ls -l {} \;|awk {print $6}|sort |uniq -d|xargs-I{} -n1 find . -not -empty -type f -size {}c -print0|xargs -0 -I{} -n1 md5 {}|awk -F = {print $2}’|uniq -d>/tmp/md5.tmp

第二步:文件md5去重。

$ sort/tmp/zzz.tmp |uniq >/tmp/md5.uniq.tmp

第三步:用grep命令,根据md5列表,找出重复的文件

$ find . -not -empty -type f -exec ls -l {} \;|awk {print $6}|sort |uniq -d|xargs -I{} -n1 find . -not -empty -type f -size {}c -print0|xargs -0 -I{} -n1 md5 {}|grep -f /tmp/md5.uniq.tmp >result.log

第三步:使用sed 解析出文件路径

sed -e "s/.*(\(.*\)).*/\1/" result.log

Tips:

1. 提高效率

先找出size大小相同的,再find一遍,然后计算文件md5,看似没有先计算md5,直接去重,而是多执行了一遍find,是为了提高查找效率。因为find size的执行效率要远高于文件md5.尤其是大文件较多的时候。

2. 处理文件名异常状况(文件名中有空格,导致默认分割)

find ~/Downloads/ -name *档案* -print0|xargs -0-I{} -n1 md5 {}

-print0 和 xargs -0 互相对应,print0输出‘\0’分割的文件列表,xargs 通过-0 解析列表

解决了以下文件名中有空格的,默认按照空格分割,导致一个文件当两个文件处理

md5: /Users/me/Downloads//档案文件: No such file or directory

md5: (1).docx: No such file or directory

MD5 (/Users/me/Downloads//档案文件(1).docx) = 6854be938d7edc6647146116f4ad6499

3. AWK 默认分割

awk -F = 是为了解决默认空白字符分割,容易和文件名中的空格混淆,字段分割不清。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。