Cambiar el nombre de archivos sin extensiones de archivo

Cambiar el nombre de archivos sin extensiones de archivo

Tengo una serie de archivos nombrados KLLxxx(los xrepresentan números). Son archivos de texto pero no tienen extensión de archivo. Solo archivos que dicen KLLseguidos 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 $1variable con nombre especial. al sprincipio 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 $1y se .fastqle agrega.

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

Respuesta2

Ejecutar el siguiente findcomando 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 .fastqa cualquier nombre de archivo que comience con KLLseguido 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

información relacionada