如何使用mv?
的特定命令批量重命名我的文件find /opt/media/rec -maxdepth 1 -type f -name '*.mp4' -mmin +1 -exec basename {} \; | awk -F_ -v OFS="_" '{sub(/\.[^.]*$/,"",$3);$3=gensub(/-([^-]*$)/,"_\\1","g",$3);gsub(/\./,"-",$3);gsub(/\./,"-",$2);;print $3,$1,$2,$4}'
我有一个目录/ opt / media / rec。在此目录中存储来自WOWZA的直播流录音。我需要将文件重命名为另一个名称(例如,我有“now_360p_2014-05-19-18.12.49.996-FET_0.mp4”,上面的命令用awk文件名转换为其他名称“2014-05-19_18-12 -01_now_720p_0.mp4" )。 我做这个剧本
#!/bin/bash
for f in $(find /opt/media/rec/ -maxdepth 1 -iname "*.mp4");
do
mv
awk -F_ -v OFS="_" '{sub(/\.[^.]*$/,"",$3);
$3=gensub(/-([^-]*$)/,"_\\1","g",$3);
gsub(/\./,"-",$3);
print $3,$1,$2,$4}'
done
但我有错误:
[root@media rec]# sh autorename.sh
: command not found2:
'utorename.sh: line 3: syntax error near unexpected token `
'utorename.sh: line 3: `for f in $(find /opt/media/rec/ -maxdepth 1 -iname "*.mp4");
答案 0 :(得分:0)
你有一个告密的错误信息:
:command not found2:
这是由输出中的回车引起的,因为您的脚本具有Windows \r\n
行分隔符。
您应该通过tr -d '\r'
或dos2unix
运行脚本。有关详细信息,请参阅the bash tag wiki,第1步。
您可以通过安装适当的工具来省去一些麻烦。使用Syntastic和ShellCheck在Vim中使用Here's a screenshot代码。问题和解决方案会自动指出。
请注意,这只会修复您的即时错误消息并让您继续使用。还有工作要做。