Scripting 检查终端中的副本?
下面的代码打印了一长串带有哈希和文件名的文件Scripting 检查终端中的副本?,scripting,shell,Scripting,Shell,下面的代码打印了一长串带有哈希和文件名的文件 md5sum *.java 我试图列出出现相同哈希值的行,这样就可以删除相同的文件,但没有成功 如何筛选和删除内容相同的文件?更重要的是: md5sum *.java | sort | uniq -d 只打印重复的行。这应该可以: md5sum *.java | sort | uniq -d -w32 这告诉uniq只比较前32个字符,这只是md5和,而不是文件名 编辑:如果-w不可用,请尝试: md5sum *.java | awk '{pr
md5sum *.java
我试图列出出现相同哈希值的行,这样就可以删除相同的文件,但没有成功
如何筛选和删除内容相同的文件?更重要的是:
md5sum *.java | sort | uniq -d
只打印重复的行。这应该可以:
md5sum *.java | sort | uniq -d -w32
这告诉uniq只比较前32个字符,这只是md5和,而不是文件名
编辑:如果-w不可用,请尝试:
md5sum *.java | awk '{print $1}' | sort | uniq -d
缺点是你不知道哪些文件有这些重复的校验和。。。无论如何,如果没有太多的校验和,您可以使用
md5sum *.java | grep 0bee89b07a248e27c83fc3d5951213c1
之后获取文件名(上面的校验和只是一个示例)。我确信在shell脚本中也有一种方法可以完成所有这一切。这将列出所有文件,并在副本之间留出一行空白:
$ md5sum *.txt \
| sort \
| perl -pe '($y)=split; print "\n" unless $y eq $x; $x=$y'
05aa3dad11b2d97568bc506a7080d4a3 b.txt
2a517c8a78f1e1582b4ce25e6a8e4953 n.txt
e1254aebddc54f1cbc9ed2eacce91f28 a.txt
e1254aebddc54f1cbc9ed2eacce91f28 k.txt
e1254aebddc54f1cbc9ed2eacce91f28 p.txt
$
要仅打印每组的第一个,请执行以下操作:
$ md5sum *.txt | sort | perl -ne '($y,$f)=split; print "$f\n" unless $y eq $x; $x=$y'
b.txt
n.txt
a.txt
$
如果你勇敢,把“除非”改为“如果”,然后
要删除除第一个组以外的所有组,请删除所有组fdupes
,并减少对重复项的查看
使用fdupes
,这是一个命令行程序,如
fdupes -r /home/masi/Documents/ > /tmp/1
less -M +Gg /tmp/1
它将查找所有重复项并将它们存储在temp中的文件中。
less命令以百分比的形式显示所有行的行位置和进程。
我从这篇文章和它清晰的维基百科文章中找到了fdupes
。
您可以通过OSX中的自制软件和Linux中的apt get安装它
与可能的删除交互使用fdupes
跑
让您选择要删除或不删除的副本,交互式作品的示例视图:
Set 4 of 2664, preserve files [1 - 2, all]: all
[+] /home/masi/Documents/Exercise 10 - 1.4.2015/task.bib
[+] /home/masi/Documents/Exercise 9 - 16.3.2015/task.bib
[1] /home/masi/Documents/Celiac_disease/jcom_jun02_celiac.pdf
[2] /home/masi/Documents/turnerWhite/jcom_jun02_celiac.pdf
Set 5 of 2664, preserve files [1 - 2, all]: 2
[-] /home/masi/Documents/Celiac_disease/jcom_jun02_celiac.pdf
[+] /home/masi/Documents/turnerWhite/jcom_jun02_celiac.pdf
你可以看到我有2664个副本。
这将是很好的,有一些静态文件,将保存有关我想要的副本的设置;我打开了一条关于这件事的线索。
例如,我在一些练习和家庭作业中有相同的bib文件,所以当用户想要副本时,不要再问第二次 代码没有给我任何输出。原因可能是,尽管两个文件具有相同的散列,但它们仍然具有不同的名称。我们应该先把名字过滤掉。谢谢!我注意到Mac没有选项-w。我认为原因是他们不希望许多命令具有相同的功能。在没有-w选项的情况下如何解析名称?顺便说一句,在任何人试图强制执行上述md5sum之前,它适用于包含“abc”的文件。)“rm”命令行中的“md5sum…”应该有反勾号,但我无法再次编辑
fdupes -rd /home/masi/Documents
Set 4 of 2664, preserve files [1 - 2, all]: all
[+] /home/masi/Documents/Exercise 10 - 1.4.2015/task.bib
[+] /home/masi/Documents/Exercise 9 - 16.3.2015/task.bib
[1] /home/masi/Documents/Celiac_disease/jcom_jun02_celiac.pdf
[2] /home/masi/Documents/turnerWhite/jcom_jun02_celiac.pdf
Set 5 of 2664, preserve files [1 - 2, all]: 2
[-] /home/masi/Documents/Celiac_disease/jcom_jun02_celiac.pdf
[+] /home/masi/Documents/turnerWhite/jcom_jun02_celiac.pdf