[更新-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