【发布时间】:2014-07-07 08:40:45
【问题描述】:
我是新手,所以请不要发誓。
我需要通过 linux 中的 shell 脚本 (bash) 将文件从旧名称重命名和转换为新名称。
我有一个像now_360p_2014-05-19-13.21.14.266-FET_0.mp4 这样的文件,但我需要得到这个2014-05-19_13-21-14_now_360p_0.mp4
我该怎么做?
小补充 - 如果文件正在被另一个进程使用,它不能被触摸。 我试过这个来探索改变命令的新结果:
#!/bin/bash
for f in (/opt/media/rec/*.mp4);
do
nf=$(echo $f | sed -r 's/([^.]+\.)([^.]+\.)([0-9])_([^_]+)(.*)/\1\4_\2\3\5/')
echo mv $f $nf
done
但我有一个错误((
auto.sh:第 3 行:意外标记
(' 'uto.sh: line 3:for f in (/opt/media/rec/*.mp4) 附近出现语法错误;
【问题讨论】:
-
FET 和毫秒应该从新名称中删除
-
见@Peque 的回答。您可以向
find添加选项,以便仅考虑此类文件,例如-mmin -540 -
在输出文件名中有一个文件夹名。例如“2014-05-15_16-42-13_/opt/media/rec/now_360p_0.mp4”
-
摆脱它是微不足道的(例如,参见
basename命令)。