Salva quanto segue come file di testo e rendilo eseguibile. Richiamalo dalla riga di comando, passando i percorsi alla cartella A e alla cartella B.
#!/usr/bin/ruby
if ARGV.size != 2
STDERR.print "#Usage: #{$0} source/folder destination/folder\n"
exit 1
end
a = ARGV[0].chomp("/")
b = ARGV[1].chomp("/")
old_bases = Hash.new
Dir.foreach(b) do |f|
next if f =~ /^\./
old_bases[f.sub(/\.[^.]*$/, "").downcase] = true
end
Dir.foreach(a) do |f|
next if f =~ /^\./
fbase = f.sub(/.[^.]*$/, "").downcase
unless old_bases[fbase]
File.rename( "#{a}/#{f}", "#{b}/#{f}" )
old_bases[fbase] = true
end
end
Script modificato per controllare il numero di argomenti e correggere l'errore in File.rename
Modificato di nuovo per ignorare il caso. Cioè, non spostare Bar.png se bar.jpg esiste già.