Отредактируйте содержимое файла gen.gz с помощью linux, awk или sed.

mtime — это поле файловой системы, в котором хранится время последнего изменения файла.

Когда youtube -dl загружает файл, он пытается установить mtime файла таким же, как в заголовке HTTP Last -Modified. При использовании --no-mtimeфайл mtime не изменяется вручную.

Если вас интересуют подробности, вы можете просмотреть исходный код youtube -dl на github. Некоторые соответствующие строки:

0
18.11.2019, 13:35
1 ответ

Предполагая, что поля разделены символом пробела,вы можете распаковать файл, передать его через 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).

1
28.01.2020, 03:06

Теги

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