Renomeando arquivos sem extensões de arquivo

Renomeando arquivos sem extensões de arquivo

Eu tenho uma série de arquivos nomeados KLLxxx( xrepresentam números). Eles são arquivos de texto, mas não possuem extensão de arquivo. Apenas arquivos que dizem KLLseguidos de três dígitos. Quero que todos terminem com a extensão de arquivo .fastq. Como KLL123-> KLL123.fastq.

Então 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 nunca usei Perl antes, então não sei como abordar isso. Eu sei que esta é uma pergunta básica, mas é a primeira vez que experimento o Linux.

Responder1

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

prename 's/(KLL\d{3})/$1.fastq/' KLL*

Responder2

Executar o seguinte findcomando no diretório que você está procurando resolverá o problema:

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

O que adicionará a extensão .fastqa qualquer nome de arquivo começando com KLLseguido de três dígitos.

Responder3

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

for f in KLL*; do mv "$f" "$f.fastq"; done

informação relacionada