Recursion 递归重命名";视频.mp4“;至;视频“U old.mp4”;

Recursion 递归重命名";视频.mp4“;至;视频“U old.mp4”;,recursion,command-line-interface,rename,zsh,Recursion,Command Line Interface,Rename,Zsh,我在数千个子目录中有数千个文件名为“video.mp4”,我需要将它们重命名为“video_old.mp4” 因为我不想启动一个会失败或导致问题的进程,所以我只是想验证我认为正确的命令 find-iname“video*”-exec重命名video\u old.mp4.mp4'{}\ 如果这不是最好的方法,请帮助我编写一个更好的命令。这应该可以做到,find-iname'video*.mp4'-execbash-c'mv$0${0/\.mp4/{u old.mp4}'{}如果您有权访问renre

我在数千个子目录中有数千个文件名为“video.mp4”,我需要将它们重命名为“video_old.mp4”

因为我不想启动一个会失败或导致问题的进程,所以我只是想验证我认为正确的命令

find-iname“video*”-exec重命名video\u old.mp4.mp4'{}\


如果这不是最好的方法,请帮助我编写一个更好的命令。

这应该可以做到,
find-iname'video*.mp4'-execbash-c'mv$0${0/\.mp4/{u old.mp4}'{}

如果您有权访问
renrem
Perl命令,则可以使用它:

find . -name \*.mp4 | rename -v -n 's/(?=.mp4)/_old/'  

注:

我假定您的文件名为:
name file.mp4
。重命名命令将匹配
mp4
之前的
,然后将
\u old
添加到它之前:如:
文件.mp4
==>
文件\u旧的.mp4

确保一切正常后,删除
-n
参数

-n
:无操作:打印要重命名的文件名,但不重命名



如果您无法访问
重命名
perl文件。你可以在C++中使用我的代码> ReReMe>代码>程序。但是它还不支持pipe

不,所有文件的名称都是准确的
video.mp4
。我需要做的是将
\u old
附加在单词
视频
之后和
.mp4
扩展名之前。
-n
参数做什么?我假设
renrem
是一个打字错误,您的意思是说
重命名
?我确实有权访问
重命名
,所以这不是问题。感谢您对
-n
参数的澄清。我是在尝试您的命令时得到的:
使用表达式:sub{use feature':5.24';s/(?=.mp4)/_old/}