修复部分mkv文件仿照同根名srt文件修改时间的问题

修复部分mkv文件仿照同根名srt文件修改时间的问题

我发现了大约50个mkv文件,其修改时间为未来(2098年和2097年)。我看到同名的 .srt 文件带有正确的日期,并且与每个 mkv 文件位于同一子文件夹中。

您将如何发出touch命令来读取最旧的 srt 并将同一子文件夹中 mkv 的最后修改日期更改为该日期?

home/incoming/media/berlin.festival.2019/berlin.festival.2019.mkv 
home/incoming/media/Exit.festival.2022/Exit.festival.2022.mkv
$ for f (*/.mkv) touch -r $f:r.srt

-- $f 不能捕获它们,只能捕获媒体文件夹根目录中的它们

我尝试过类似的东西

$ for file in $(find /home/loop/test/*.mkv -type f) do touch -r $f:r.srt -- $f

在我的测试文件夹中,但它不起作用。

Ubuntu 是操作系统。

将子文件夹的最后修改时间更改为其中最旧文件的最后修改时间,我修复了文件夹的日期

for dir in /home/loop/test/*(NF); do
  oldest=( $dir/*.(|srt|)(N.Om[1]) )
  if (( $#oldest )) touch -r $oldest -- $dir
done

ls -l现在文件夹的日期已经完美,因为我已经使用 srt 文件中的日期修复了它。

但我想根据 srt 文件的日期更改子文件夹内 mkv 文件的日期。

/home/loop/test # ls -l  
drwxrwxrwx 2 loop loop 4096 Jul 23 2019 berlin.festival.2019 
drdrwxrwx 2 loop loop 4096 Jan 5 2019 Belgum.2018
drwxrwxrwx 2 loop loop 4096 Feb 21 2020 Denmark.2019 
drwxrwxrwx 2 loop loop 4096 Oct 3 2020 Exit.festival.2022

答案1

在 中zsh,从/home/loop/test目录中:

for mkv in **/*.mkv(Nms-1); do
  srt=( $mkv:r(.*|).srt(N.Om[1]) )
  if (( $#srt )) touch -r $srt -- $mkv
done

m将循环遍历最后修改的所有文件1 s(其想法是获取将来修改时间的文件),找到具有相同根名称的srt文件(前面有一个可选),将最旧的(到rder按修改时间)并将其 mtime 复制到 mkv 的 mtime。.xxOmO

(顺便说一句,你的oldest=( $dir/*.(|srt|)(N.Om[1]) )应该是oldest=( $dir/*.srt(N.Om[1]) )(|srt|)方法没有什么srt没有什么)。

相关内容