我的安全摄像机录像机(位于远处)在任何事件发生后都会通过 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