1

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

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 . Какой самый простой способ сделать это?

4 ответа4

3

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

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

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

1

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

1

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .