使用mv find和awk重命名文件

时间:2014-05-20 07:05:38

标签: bash awk find

请帮我解决问题 - 我需要在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命令出了什么问题?

2 个答案:

答案 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