Для переименования нескольких файлы подобным способом, я нашел следующий сценарий очень полезным и устойчивым за эти годы.
Это просто помещает вывод ls
в Ваш любимый текстовый редактор. Вы просто изменяете текст, сохраняете, близко. Файлы переименованы соответственно.
Особенно замечательно при объединении этого с редактированием столбца Vi (Ctrl-v
, выберите блок, I
вставить прежде или A
для вставки после введите текст, Esc
).
#!/usr/bin/ruby
RM = '/bin/rm'
MV = '/bin/mv'
from = Dir.entries('.').sort; from.delete('.'); from.delete('..')
from.sort!
from.delete_if {|i| i =~ /^\./} # Hidden files
tmp = "/tmp/renamer.#{Time.now.to_i}.#{(rand * 1000).to_i}"
File.open(tmp, 'w') do |f|
from.each {|i| f.puts i}
end
ENV['EDITOR'] = 'vi' if ENV['EDITOR'].nil?
system("#{ENV['EDITOR']} #{tmp}")
to = File.open(tmp) {|f| f.readlines.collect{|l| l.chomp}}
`#{RM} #{tmp}`
if to.size != from.size
STDERR.puts "renamer: ERROR: number of lines changed"
exit(1)
end
from.each_with_index do |f, i|
puts `#{MV} -v --interactive "#{f}" "#{to[i]}"` unless f == to[i]
end
Я называю этот сценарий renamer
.
Добро пожаловать в ServerFault! Обычно мы задаем здесь один вопрос на вопрос, но, поскольку вы новичок, я прощу вас один раз :)