Answers:
将以下内容另存为文本文件并使其可执行。从命令行调用它,将路径传递到文件夹A和文件夹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
编辑脚本以检查参数数量,并修复File.rename中的错误
再次编辑以忽略案例。也就是说,如果bar.jpg已经存在,请不要移动Bar.png。
chomp
编辑。如果ARGV.size!= 2,我可能已检查并输出错误消息。您可以这样做,和/或硬编码两个文件夹的路径。想想看,我会这样做,因为你可能不知道红宝石。