Как переименовать файл с известным именем, присвоив ему новое имя, которое сохранится в переменной?

Как переименовать файл с известным именем, присвоив ему новое имя, которое сохранится в переменной?

[ОБНОВЛЕНИЕ-1]:Если возможно, поставьте мне минусы для мотивации выучить простейшие команды.


Итак, у меня есть один файл в каталоге:

ls | grep *.mp4 

видео.mp4

Я использую эту команду для случайного переименования и перемещения файла в другой каталог:

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

Все в порядке, я получаю случайное имя для видео.mp4

cd Documents; ls | grep *.mp4

19889.mp4

Вопрос:

Как использовать:

a="This is name file"
echo $a

Это имя файла

для переименования *.mp4 (не случайно) и для получения

Это имя файла.mp4


Мне нужно что-то вроде этого:

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

решение1

Допустим, изначальное имя известно заранее и это video.mp4. Вы переименовываете его с помощью

mv video.mp4 "$a".mp4

Примечания:

  • Если переменная пуста (или не задана), окончательное имя будет .mp4. Имена, начинающиеся с точки ( .), «скрыты», plain lsпропускает их, вам нужно ls -aих увидеть.
  • Если файл с целевым именем уже существует, он будет утерян, а предыдущий video.mp4файл примет его имя. Чтобы избежать неудач, рассмотрите mv -i; он запросит подтверждение, если путь назначения существует.

решение2

Я предполагаю, что вы хотите напечатать новое случайное имя файла? В этом случае проще всего повторно использовать значение вашей случайной величины.

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

Связанный контент