#!/usr/bin/env ruby from = ARGV.shift to = ARGV.shift ARGV.each { |l| if File.symlink?(l) tgt = File.readlink(l) if tgt.gsub!(from, to) File.unlink(l) puts "#{tgt} -> #{l}" File.symlink(tgt, l) else warn "#{l} doesn't match #{from}, skipping" end else warn "#{l} is not a symlink, skipping" end }