¿Cómo cambiar el nombre de un archivo con un nombre conocido a un nombre nuevo que se almacena en una variable?

¿Cómo cambiar el nombre de un archivo con un nombre conocido a un nombre nuevo que se almacena en una variable?

[ACTUALIZACIÓN-1]:Si es posible, dame ventajas para motivarme a aprender los comandos más simples.


Entonces, tengo un archivo en el directorio:

ls | grep *.mp4 

vídeo.mp4

Utilizo este comando para cambiar el nombre y mover archivos aleatoriamente en otro directorio:

for a in *.mp4; do mv -n "$a" "${a/*/$RANDOM.mp4}"; done;  mv *.mp4 /home/misdeed/Documents

Está bien, obtengo un nombre aleatorio para el video.mp4

cd Documents; ls | grep *.mp4

19889.mp4

pregunta:

Cómo utilizar es:

a="This is name file"
echo $a

Este es el archivo de nombre

para cambiar el nombre de *.mp4 (no al azar) y para obtener

Este es el nombre archivo.mp4


Necesito algo como esto:

  • a="This is name file"
  • COMMAND FOR RENAME BUT WITHOUT $RANDOM. I WANT USE $a in renamed file

Respuesta1

Digamos que el nombre original se conoce de antemano y es video.mp4. Le cambias el nombre con

mv video.mp4 "$a".mp4

Notas:

  • Si la variable está vacía (o no configurada), el nombre final será .mp4. Los nombres que comienzan con punto ( .) están "ocultos", simplemente lslos omite, es necesario ls -averlos.
  • Si ya existe un archivo con el nombre de destino, se perderá y el video.mp4archivo anterior tomará su nombre. Para evitar contratiempos considere mv -i; solicitará confirmación si la ruta de destino existe.

Respuesta2

¿Supongo que desea imprimir el nuevo nombre de archivo aleatorio? En ese caso, lo más fácil es reutilizar el valor de su variable aleatoria.

for file in *.mp4; do
  RANDOM_NAME="${file/*/$RANDOM.mp4}";
  mv -n "$file" /home/misdeed/Documents/"$RANDOM_NAME";
  echo "This is name $RANDOM_NAME.mp4";
done

información relacionada