PHP и PERL → Массовое переименование файлов
Повседневное применение / Перл
Понадобилось переименовать кучу файлов из формата
файлнэйм.с.тхт в файлнэйм.с
Каждый файл переименовывать жутко не хотелось.
Команда mv *.txt * слишком утопична :)
Задача ясна, начинаем решать.
Сначала нужно разработать алгоритм решения. На человечьем наречии.
Теперь идем далее - наброски некоторых моментов.
Приступаем к разработке самого скрипта.
Понадобилось переименовать кучу файлов из формата
файлнэйм.с.тхт в файлнэйм.с
Каждый файл переименовывать жутко не хотелось.
Команда mv *.txt * слишком утопична :)
Задача ясна, начинаем решать.
Сначала нужно разработать алгоритм решения. На человечьем наречии.
1 2 3 |
получить исходный список файлов получить конечный список файлов переименовать каждый элемент 1 в соответствующий элемент 2 |
Теперь идем далее - наброски некоторых моментов.
1 2 3 |
получить список файлов нужно по связке ls | grep регулярные выражения - сила, нужно читать ман переименовывать по mv |
Приступаем к разработке самого скрипта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/usr/bin/perl # 'rename throught pattern' script # получаем список файлов через ls | grep # # столько слэшей нужно потому, что слэш # экранируется перлом. то есть grep # идет \\.txt @list1=split("\n",`ls | grep \\\\.txt`); # изначально второй список равен первому @list2=@list1; # регулярное выражение через for # замена окончания .txt на ничего # $#list1 = индекс последнего элемента # массива for ($i=0;$i<=$#list1;$i++) { @list2[$i] =~ s/\.txt$//; `mv @list1[$i] @list2[$i]`; } |