Пакетный набор метаданных даты создания MP4 из имени файла

Вы можете использовать cutдля извлечения части после интересующей вас открывающей скобки и завершить с помощью sed для удаления части после скобки обработки.

cut -d '[' -f 3 | sed 's/].*//'

Кроме того, вы можете сделать это с помощью одной команды sed или awk.

sed 's/^[^[]*\[\([^\]\)]*\][^[]*\[\([^\]\)]*\][^[]*\[\([^\]\)]*\].*$/\3/'
gawk -F '(^|\\])[^[]*(\\[|$)' '{print $4}'
awk '{split($0, a, "(^|\\])[^[]*(\\[|$)"); print a[4]}'

В обеих командах awk поле 1 пусто, поскольку первый разделитель начинается в начале строки, поэтому третья группа в квадратных скобках — это поле 4.

0
17.06.2019, 06:29
2 ответа

Это использует ffmpeg(sudo apt install ffmpegдля установки )и работает с вашими точными именами файлов. Он заменяет ваши старые файлы новыми с набором метаданных. Может сначала попробовать БЕЗ части && mv "~$f" "$f":

$ for f in *.mp4; do ffmpeg -i "$f" -metadata creation_time="${f:0:4}-${f:4:2}-${f:6:2} ${f:9:2}:${f:11:2}:${f:13:2}" -codec copy "~$f" && mv "~$f" "$f"; done

Проверить метаданные с помощью:

$ ffprobe -v quiet 20190228_155905.mp4 -print_format json -show_entries stream=index,codec_type:stream_tags=creation_time:format_tags=creation_time
1
14.05.2020, 16:31

Другой вариант — использоватьexiftool

В этом примере сначала запустите touch, чтобы установить время модификации файла, затем:

exiftool '-CreateDate<FileModifyDate' \
  '-TrackCreateDate<FileModifyDate' \
  '-MediaCreateDate<FileModifyDate' \
  filename.mp4
0
22.11.2021, 08:43

Теги

Похожие вопросы