重命名多个文件

重命名多个文件

我的安全摄像机录像机(位于远处)在任何事件发生后都会通过 FTP 将视频文件发送到我的服务器。它会自动创建包含日期名称的 sudir。使用 find 和 ffmpeg 命令,服务器将 DAV 文件转换为 AVI 并删除 DAV 文件。之后,每个视频文件的名称如下:

19.38.41-19.38.55[M][@0][0].dav.avi

我想将上面的名称更改为如下格式:

19-38-41.avi

我怎样才能在同一个“查找”命令行中做到这一点

我尝试首先使用如下语法:

find $katalog -name '*.dav.avi' -execdir rename 's/\.dav//' {} \;

但结果是:

rename:not enough arguments

知道什么地方出了问题吗?

答案1

在 Linux 发行版中有两个rename实用程序。

   rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

   rename [options] expression replacement file...

在 Ubuntu 上改名命令遵循第一个概要,而在其他Linux发行版中,改名命令概要是第二个。

在 Ubunturename重命名.ul如果缺少第三个参数它将返回:

   rename:not enough arguments

我猜你没有使用 Ubuntu,无论如何,试试这个:

   find $katalog -name '*.dav.avi' -execdir rename .dav.avi .avi {} \;

在 lubuntu 12.04 上进行了测试rename.ul


除了rename,您还可以使用以下脚本:

   find . -name "*.dav.avi" | while read file; do newFile=`echo $file | awk '{ print substr($0,1,match($0,"\\[")-1) ".avi"; }'`; mv $file $newFile; done

相关内容