Я бы хотел сопоставить шаблон \d\dQ\d
или \dQ\d\d
и переформатировать его перед именем файла. Используя OSX Terminal или ruby, что будет лучшим способом сделать это? Это немного сложнее, потому что это шаблон 1 или шаблон 2.
В первом файле, например, шаблон «3Q17» - это дата, которая означает 3-й квартал 2017 года. Мне нужно добавить 2017Q3 перед именем файла. Тем не менее, у меня есть другая модель "05Q1", которая означает 1-й квартал 2005 года, поэтому мне нужно добавить 2005Q1.
Файлы:
ABC-EDFGH-JLG-Sample-3Q17-fIS.pdf
^^^^
2Q13 ABC MF PM Example_fIS.pdf
^^^^
03Q1_FIS.pdf
^^^^
05Q1 ABC_IS.pdf
^^^^
Файлы переименованы:
2017Q3_ABC-EDFGH-JLG-Sample-3Q17-fIS.pdf
2013Q2_2Q13 ABC MF PM Example_fIS.pdf
2003Q1_03Q1_FIS.pdf
2005Q1_05Q1 ABC_IS.pdf
Этот вопрос помогает с одним шаблоном, но не с двумя.
Mac OS X терминальное пакетное переименование
Мой код ruby работает нормально:
Dir.glob("*.pdf").each do |orig_name|
new_name = orig_name.gsub(/^.*?(?:(\d\d)Q(\d)|(\d)Q(\d\d))/, '20\1\4Q\2\3_\0')
File.rename(orig_name, new_name)
end
Однако мой сценарий переименования (с использованием brew install rename) в терминале дает неверные результаты.
rename -n -e 's/^.*?(?:(\d\d)Q(\d)|(\d)Q(\d\d))/'20\1\4Q\2\3_\0'/' *.pdf
'03Q1_FIS.pdf' would be renamed to '2014Q23_0_FIS.pdf'
'03Q1_vIS.pdf' would be renamed to '2014Q23_0_vIS.pdf'
'05Q1 ABC_IS.pdf' would be renamed to '2014Q23_0 ABC_IS.pdf'
'2Q13 ABC MF PM Example_fIS.pdf' would be renamed to '2014Q23_0 ABC MF PM Example_fIS.pdf'