use*_*487 3 bash regex timestamp
由于这更像是一个 Bash 问题,我认为这比超级用户更适合服务器故障,即使我在谈论媒体文件。
我不得不对几个媒体文件进行批量转换,所有输出文件都有一个新的时间戳。
/somedir/
file1.mpg (correct timestamp)
file1.mpg.m4v (wrong timestamp)
file2.mpg (correct timestamp)
file2.mpg.m4v (wrong timestamp)
...
Run Code Online (Sandbox Code Playgroud)
我想要做的是时间戳的批处理副本,以便每个 *.mpg.m4v 获得相应 *.mpg 文件的时间戳。
从我的搜索来看,看起来我需要使用touch -r一些带有替换的正则表达式来处理这个问题。
我是否在正确的轨道上,是否有人对我需要如何做正则表达式(我的正则表达式知识,不好,不好,不好)有什么建议来处理这个问题?
来看看怎么样...
for f in *.mpg; do
touch -r "$f" "${f}.m4v"
done
Run Code Online (Sandbox Code Playgroud)
不需要正则表达式,只需从右侧解决问题。循环遍历 *.mpg 并将 .m4v 添加到它们比相反要容易得多,尽管您也可以在没有正则表达式的情况下以另一种方式编写它(只是为了好玩):
for f in *.m4v; do
touch -r "${f%\.m4v}" "$f"
done
Run Code Online (Sandbox Code Playgroud)
如果你想用一个命令完成它,你可以用find(为了安全将它限制在一个级别):
find . -maxdepth 1 -name '*.mpg' -exec touch -r {} {}.m4v \;
Run Code Online (Sandbox Code Playgroud)