Modifique seletivamente os nomes dos arquivos

0

Eu tenho uma pasta contendo um grande número (mais de 1500) arquivos ttf muitos, não todos, dos quais de alguma forma foram nomeados incorretamente. por exemplo. arialttf em vez de arial.ttf . Existe um comando de shell que eu poderia usar para alterar os nomes de arquivo com defeito para que a parte ttf tailing seja convertida em .ttf?

Eu sou razoavelmente competente com os comandos bash, mas isso tem medo está além das minhas capacidades. Eu apreciaria muito qualquer ajuda.

    
por DroidOS 27.10.2015 / 18:21

3 respostas

1

Você pode inserir o seguinte comando no diretório com os arquivos incorretos:

for f in *[^.]ttf; do mv "$f" "${f%???}.ttf"; done

Você pode primeiro colocar um echo antes do mv para ter certeza de que o comando está fazendo o que você espera.

O comando funciona definindo cada f para cada nome de arquivo terminado em ttf não precedido por . e renomeando o arquivo para o nome com os três últimos caracteres removidos (ou seja, ttf ) com .ttf , em seguida, anexado.

    
por 27.10.2015 / 18:48
1

Concluí isso com um pequeno script bash. Salve isso no diretório com todos os seus arquivos ttf e execute-o. Ele encontra todos os arquivos que não contêm ".ttf" e os renomeia para incluir a extensão.

#!/bin/bash

for f in *ttf ;
do
  if [[ $f != *'.ttf' ]]
  then
        mv $f ${f::-3}.ttf
  fi
done
    
por 27.10.2015 / 18:47
0

Se você tiver o script rename Perl , é muito simples:

$ touch arialttf
$ touch somethingttf
$ touch thirdttf
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Oct 27 18:30 arialttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 somethingttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 thirdttf
$ rename 's,ttf$,.ttf,' *
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Oct 27 18:30 arial.ttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 something.ttf
-rw-r--r-- 1 ja ja 0 Oct 27 18:31 third.ttf
    
por 27.10.2015 / 18:35