
Tengo una serie de archivos nombrados KLLxxx
(los x
representan números). Son archivos de texto pero no tienen extensión de archivo. Solo archivos que dicen KLL
seguidos de tres dígitos. Quiero que todos terminen con la extensión de archivo .fastq
. Como KLL123
-> KLL123.fastq
.
Así que intenté usar este comando.
mv KLL* KLL*.fastq
Pero sigo recibiendo el mensaje de error:
mv: target 'KLL067.fastq' is not a directory
Conozco la función del comando de cambio de nombre, pero nunca antes había usado Perl, así que no sé cómo abordar esto. Sé que esta es una pregunta básica, pero es la primera vez que pruebo Linux.
Respuesta1
prename
... cambiar el nombre con expresiones Perl. El siguiente comando toma la lista de archivos (KLL*) y, para cada uno, toma el nombre completo de KLL más tres números ( KLL\d{3})
) y lo guarda en la $1
variable con nombre especial. al s
principio de la expresión significa 'sustituir' lo que hay entre los dos primeros //
por lo que está entre el segundo conjunto, que es el nombre de archivo completo $1
y se .fastq
le agrega.
prename 's/(KLL\d{3})/$1.fastq/' KLL*
Respuesta2
Ejecutar el siguiente find
comando en el directorio que estás viendo será suficiente:
find . -name 'KLL[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.fastq' {} \;
Lo que agregará la extensión .fastq
a cualquier nombre de archivo que comience con KLL
seguido de tres dígitos.
Respuesta3
Hay muchas soluciones posibles aquí, esta debería ser una:
for f in KLL*; do mv "$f" "$f.fastq"; done