У меня есть следующие файлы:
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». Последняя часть просто перемещает старый файл в преобразованное имя файла.