mtime
— это поле файловой системы, в котором хранится время последнего изменения файла.
Когда youtube -dl загружает файл, он пытается установить mtime файла таким же, как в заголовке HTTP Last -Modified. При использовании --no-mtime
файл mtime не изменяется вручную.
Если вас интересуют подробности, вы можете просмотреть исходный код youtube -dl на github. Некоторые соответствующие строки:
Заголовок, используемый для установки mtime с помощьюtry_utime
:downloader/http.py :Строка 243
try_utime
метод в FileDownloader
классе:downloader/common.py :Строка 202
Значение по умолчанию дляupdatetime
:options.py :Строка 724
Предполагая, что поля разделены символом пробела,вы можете распаковать файл, передать его через awk
для внесения изменений, а затем сжать полученные данные в файл с новым именем. Это можно сделать в одном конвейере без сохранения несжатых данных на диске. Когда операция будет завершена, проверьте результат и замените им оригинал, если он выглядит нормально.
gzip -d -c gen.gz |
awk '{ sub(":[^:]*:[^:]*$", "", $2); print }' |
gzip -c >new-gen.gz
# look at new-gen.gz, and then
mv new-gen.gz gen.gz # only if you want to discard the original data!
Код awk
может быть выполнен разными способами. Я решил удалить последние две строки с разделителями:
-из второго поля, а не отрезать последние четыре символа, как вы предложили. Если у вас всегда есть только одиночные символы, регулярное выражение :[^:]*:[^:]*$
может быть записано как :.:.$
.
Так как вы изменяете данные в сжатом файле, вы не можете -редактировать файл (как вsed -i
).