如何将已知名称的文件重命名为存储在变量中的新名称?

如何将已知名称的文件重命名为存储在变量中的新名称?

[更新-1]:如果可能的话,请给我一些建议,以激励我学习最简单的命令。


因此,目录中有一个文件:

ls | grep *.mp4 

视频.mp4

我使用此命令随机重命名和移动另一个目录中的文件:

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

没关系,我随机获得了 video.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。以点(.)开头的名称是“隐藏的”,plainls会跳过它们,您需要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

相关内容