Renomear determinado conjunto de arquivos (Linux)

Renomear determinado conjunto de arquivos (Linux)

Eu tenho os seguintes arquivos:

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

Eu gostaria de retirar a boxScoreparte de cada arquivo, então, por exemplo, boxScoreBaseball.html.phpficaria baseball.html.php. Qual a maneira mais fácil de fazer isso?

Responder1

Provavelmente só funciona com Bash:

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

Eu sempre uso esta referência para coisas rápidas e sujas:http://aurelio.net/shell/canivete/en/(ver seção 4).

Responder2

Outra opção é usar mmv(vereste artigo para mais exemplos).

Para o exemplo dado:

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

Responder3

Você não pode renomear tudo diretamente, você deve usar um script bash. Talvez estes links sejam úteis para você:

Responder4

Execute este pequeno script de shell:

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

Iteramos cada arquivo no diretório atual. Primeiro, repetimos o nome do arquivo sem os primeiros 8 caracteres. Em seguida, usamos sedpara converter o primeiro caractere para minúsculo. A sedexpressão de pesquisa significa "início da linha, grupo 1: uma letra maiúscula, grupo 2: o resto", e a expressão de substituição significa "grupo de correspondência 1 em minúsculas e, em seguida, anexar o grupo 2". A última parte apenas move o arquivo antigo para o nome do arquivo transformado.

informação relacionada