Renomeando arquivos sem extensões de arquivo

3

Eu tenho uma série de arquivos chamados KLLxxx (o x representa números). Eles são arquivos de texto, mas não têm extensão de arquivo para eles. Apenas arquivos que digam KLL seguido por três dígitos. Eu quero que todos terminem com a extensão de arquivo .fastq . Como KLL123 - > KLL123.fastq .

Então eu tentei usar este comando

mv KLL* KLL*.fastq

Mas continuo recebendo a mensagem de erro:

mv: target 'KLL067.fastq' is not a directory

Eu sei sobre a função de comando renomear, mas eu nunca usei o Perl antes, então não sei como abordar isso. Eu sei que esta é uma questão básica, mas esta é minha primeira vez experimentando o Linux.

    
por kevluv93 06.11.2015 / 16:29

3 respostas

3

A execução do seguinte comando find no diretório que você está vendo fará o seguinte:

find . -name 'KLL[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.fastq' {} \;

Que adicionará a extensão .fastq a qualquer nome de arquivo começando com KLL seguido por três dígitos.

    
por 06.11.2015 / 16:37
6

prename ... renomeie com expressões Perl. O comando a seguir pega a lista de arquivos (KLL *), e para cada um deles, ele pega o nome inteiro de KLL mais três números ( KLL\d{3}) ) e salva isso na variável especial denominada $1 . o s no início da expressão significa 'substituir' o que está entre os dois primeiros // com o que está entre o segundo conjunto, que é o nome completo do arquivo em $1 e acrescentar .fastq a ele.

prename 's/(KLL\d{3})/$1.fastq/' KLL*
    
por 06.11.2015 / 16:43
2

muitas soluções possíveis aqui, isso deve ser uma:

for f in KLL*; do mv "$f" "$f.fastq"; done
    
por 06.11.2015 / 16:36

Tags