我发现了大约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。.xx
Om
O
(顺便说一句,你的oldest=( $dir/*.(|srt|)(N.Om[1]) )
应该是oldest=( $dir/*.srt(N.Om[1]) )
。(|srt|)
方法没有什么或srt
或没有什么)。