
Eu tenho uma série de arquivos nomeados KLLxxx
( x
representam números). Eles são arquivos de texto, mas não possuem extensão de arquivo. Apenas arquivos que dizem KLL
seguidos 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 $1
variável nomeada especial. o s
no 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 $1
e anexar .fastq
a ele.
prename 's/(KLL\d{3})/$1.fastq/' KLL*
Responder2
Executar o seguinte find
comando 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 .fastq
a qualquer nome de arquivo começando com KLL
seguido 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