我找到了一个查找重复文件的工具,现在我准备删除重复文件。我盯着输出文件的格式看了一会儿,想出了这个脚本。
#!/usr/bin/env ruby
contents = File.open('fdupes-result', 'rb') { |f| f.read }
duplicates = contents.split("\n\n")
duplicates.each do |set|
list = set.split("\n").reverse
list.drop(1).each do |filename|
# print "rm #{filename}"
%x[ rm #{filename} ]
end
end
注释print
语句是我用来非破坏性测试的东西,它似乎工作得很好。但是当我添加%x
命令时,我开始得到
sh: 1: Syntax error: "(" unexpected
我不知道发生了什么,直到我意识到该文件的名称如下/media/LilGalactus/music/Robert Johnson - Complete Recordings/Robert Johnson - The Complete Recordings (Disc2of2)[EAC-FLAC](oan)/s.gif
- 即,我的数据充满了未转义的空格、括号等。在大约 30 秒的时间里,我考虑使用 vim 命令来转义字符:s/\(/\\\(/g
,我认为这种方法的局限性非常明显。有任何想法吗?