Я хотел бы написать скрипт, чтобы переименовать огромное количество файлов по нескольким различным правилам. Мне нужно удалить определенную строку из некоторых, а затем переименовать другие по регулярному выражению (некоторые из которых будут теми, из которых я ранее удалил строку), а затем переименовать другие на основе чисел в именах файлов.Bash - Переименование файлов
В общем, скажем, у меня есть несколько каталогов (сотни), которые все выглядят обычно так:
1234-pic_STUFF&TOREMOVE_2000.tiff
1234-pic_STUFF&TOREMOVE_4000.tiff
1234-MORESTUFFTOREMOVE-012.jpg
1234-MORESTUFFTOREMOVE-037.jpg
1234-STUFF&TOREMOVE.pptx.pdf (don't ask about this one)
1234-ET.jpg
1234-DF.jpg
Чтобы тот, который выглядит как:
1234_smallNum.tiff
1234_bigNum.tiff
1234_smallNum.jpg
1234_bigNum.jpg
1234_CaseReport.pdf
1234_ET.jpg
1234_DF.jpg
У меня уже есть скрипты, которые используют Perl-скрипт для переименования по регулярному выражению (я получил его с SO, но я не могу найти его снова, чтобы ссылаться на него). Они похожи на remove_stuff_to_remove.sh
и rename_case_reports.sh
, и я могу записывать их в каждый каталог и выполнять их индивидуально, вызывая их без ввода.
Однако, я не знаю, как преобразовать имена файлов на основе чисел (2000 и 012 на smallNum; 4000 и 037 на bigNum, обратите внимание, что эти цифры сильно различаются, поэтому я не могу пройти по диапазону или регулярному выражению , Я должен сравнивать числа друг с другом.)
И я не знаю, как автоматизировать весь процесс, чтобы я мог вызвать один скрипт из корневого каталога всех этих каталогов, и он сделает все эти вещи для меня. Я хорошо понимаю регулярные выражения, но я не очень хорошо справляюсь с командой find
или с оболочкой в целом.
Кроме того, я говорю Bash, но на самом деле, если это может быть лучше сделано в Java, C, Python, Ruby или Lisp, я знаю эти языки намного лучше, и я просто хочу, чтобы это решение до того, как я получу эти файлы, сбрасываемые на меня (в следующем месяце или около того) ...
Как замечательный комментарий, Perl или Bash, по-видимому, являются наиболее подходящими вариантами для выполнения такого рода задач. –
Я начинаю понимать. Вы уверены, что у вас не может быть более двух файлов в каталоге с тем же именем, с тем же расширением, но с другим номером? –
Да, я уверен. Это медицинские данные, и для каждого из них не более 2 «сканирований» (но может быть только один, и в этом случае он считается небольшим). –