请帮我解决问题 - 我需要在bash中重命名文件。
我有这个命令:
find /opt/media/rec -maxdepth 1 -type f -name '*.mp4' -mmin +60 -exec basename {} \; -exec mv {} \; -exec awk -F_ -v OFS="_" '{sub(/\.[^.]*$/,"",$3);$3=gensub(/-([^-]*$)/,"_\\1","g",$3);gsub(/\./,"-",$3);print $3,$1,$2,$4}' {} \;
但是我有错误:缺少参数
查找/ opt / media / rec -maxdepth 1-type f -name' .mp4'-mmin +60 -exec basename {} \; -exec mv {} \; -exec awk -F_ -v OFS =“_” “{子(/.[^.] $ / “”,$ 3); $ 3 = gensub(/ - ([^ - ] * $)/, “_ \ 1”, “G”,$ 3 ); GSUB(/./,"-",$ 3);打印 $ 3,$ 1,$ 2,$ 4}'{} \; now_720p_2014-05-19-18.12.46.266-FET_0.mp4 mv: 在«/opt/media/rec/now_720p_2014-05-19-18.12.46.266-FET_0.mp4»之后 尝试`mv --help'后缺少目标文件操作数 信息。
我的bash命令出了什么问题?
答案 0 :(得分:1)
问题是,
find ... -exec mv {} \; ....
mv
命令至少需要两个参数。所以,它应该是,
find ... -exec mv first_arg second_arg \; ...
这就是你获得mv: missing destination file operand after
的原因。
<强>测试强>
$ mv somefile
mv: missing destination file operand after `somefile'
Try `mv --help' for more information.
答案 1 :(得分:0)
尝试使用rename。例如:
rename htm html *.htm