いくつかのmkvファイルが同じルート名を持つsrtファイルの修正時間を模倣する問題を修正しました。

いくつかのmkvファイルが同じルート名を持つsrtファイルの修正時間を模倣する問題を修正しました。

修正時間が未来(2098と2097)の約50個のmkvファイルを見つけました。各 mkv ファイルと同じサブフォルダに、正しい日付と同じ名前の .srt ファイルが表示されます。

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 -lsrtファイルの日付を使用してフォルダを変更したので、フォルダの日付は完璧です。

ところで、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します。 mtimeがmkvにコピーされました。.xxOmO

(ところであなたのoldest=( $dir/*.(|srt|)(N.Om[1]) )しなければならないoldest=( $dir/*.srt(N.Om[1]) )(|srt|)方法何もないまたはsrt何もない)。

関連情報