Переименовать определенный набор файлов (Linux)

Переименовать определенный набор файлов (Linux)

У меня есть следующие файлы:

boxScoreBaseball.html.php
boxScoreBasketball.html.php
boxScoreBowling.html.php
boxScoreCheer.html.php
boxScoreCrew.html.php
boxScoreCrossCountry.html.php
boxScoreEquestrian.html.php
boxScoreFieldHockey.html.php
boxScoreFootball.html.php
boxScoreGolf.html.php
boxScoreGymnastics.html.php
boxScoreHockey.html.php
boxScoreLacrosse.html.php
boxScoreRugby.html.php
boxScoreSkiing.html.php
boxScoreSoccer.html.php
boxScoreSoftball.html.php
boxScoreSwimming.html.php
boxScoreTennis.html.php
boxScoreTrack.html.php
boxScoreVolleyball.html.php
boxScoreWaterPolo.html.php
boxScoreWrestling.html.php

Я хотел бы взять boxScoreчасть из каждого файла, так, например, чтобы boxScoreBaseball.html.phpстало baseball.html.php. Какой самый простой способ сделать это?

решение1

Вероятно, работает только с Bash:

for i in boxScore*; do mv $i ${i#boxScore}; done

Я всегда использую эту ссылку для быстрого и чернового bash-творчества:http://aurelio.net/shell/canivete/en/(см. раздел 4).

решение2

Другой вариант — использовать mmv(см.эта статья для большего количества примеров).

Для данного примера:

mmv "boxScore*.html.php" "#1.html.php"

решение3

Вы не можете напрямую переименовать все, вы должны использовать скрипт bash. Возможно, эти ссылки будут вам полезны:

решение4

Запустите этот небольшой скрипт оболочки:

for file in *; do echo "${file:8}" | sed -e 's/^\([A-Z]\)\(.*\)/\l\1\2/' | xargs mv "$file"; done

Мы перебираем все файлы в текущем каталоге. Сначала мы выводим имя файла без первых 8 символов. Затем мы используем sedдля преобразования первого символа в нижний регистр. sedВыражение поиска означает «начало строки, группа 1: заглавная буква, группа 2: остальное», а выражение замены означает «соответствие группе 1 строчными буквами, а затем добавление группы 2». Последняя часть просто перемещает старый файл в преобразованное имя файла.

Связанный контент