
Eu tenho vários arquivos de texto que terminam com a linha www.thethinkfoundation.org
, por exemplo:
file1.www.thethinkfoundation.org.txt
file2.www.thethinkfoundation.org.txt
.
.
.
file100.www.thethinkfoundation.org.txt
Desejo remover/excluirwww.thethinkfoundation.org
Tentei o seguinte comando em um terminal para conseguir isso:
for f in www.thethinkfoundation.org*; do mv "$f" "${f#thethinkfoundation.org}"; done
O resultado foi:
file1..txt
file2..txt
.
.
.
file100..txt
Agradecemos antecipadamente por uma solução que funcione.
PS: Não desejo usar o rename
comando. Na verdade, estou procurando um que funcione em distribuições Linux e *BSD. Meu editor de texto preferido é o nano
.
Responder1
Substituição de substring com base emExpansão de parâmetros de shellin bash
e alguns outros shells também podem ser alcançados de duas maneiras:
Primeiro, você pode substituirapenas a primeira ocorrência(da esquerda para a direita) de um padrão como este:
${var/pattern/replacement}
Segundo, você pode substituirtodas as ocorrênciasde um padrão como este:
${var//pattern/replacement}
Onde var
está a variável/parâmetro que contém a string e pattern
é o padrão que você deseja encontrar e substituir nessa string e replacement
é o substituto que você deseja substituir pattern
por aquele que também pode ser deixado vazio, ou seja, ${var//pattern/}
se você deseja apenas excluir esse padrão da corda.
Portanto, a solução desejada ficaria assim:
for f in *www.thethinkfoundation.org*; do
echo mv -n -- "$f" "${f//www.thethinkfoundation.org./}"
done
Eu adicionei echo
um teste para que você possa testá-lo primeiro e depois retirá- echo
lo e executá-lo novamente para fazer o trabalho real.