我發現了一個工具來查找重複的文件,現在我準備好刪除重複文件了。我盯着輸出文件的格式,想出了這個腳本。Ruby腳本編寫:%x(命令)和意外(錯誤
#!/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
)轉義字符,我認爲這種方法的侷限性非常明顯。有任何想法嗎?
我建議你忘記'%x [']'(和反引號等價)存在。他們是非常困難和混亂正確和安全地使用,並有更好的選擇。 –