Perl, как извлечь файл.gz с расширением.txt
В настоящее время я застрял с этой проблемой, где мой файл.gz "some_name.txt.gz" (.gz не виден, но может быть распознан с помощью функций File::Type), а внутри файла.gz есть ПАПКА с именем "some_name.txt", которая содержит другие файлы и папки.
Тем не менее, я не могу извлечь архив, как вы бы вручную (папка с именем "some_name.txt" извлекается вместе с ее содержимым) при вызове функции извлечения из Archive::Extract, потому что он просто извлечет " some_name.txt "папка в виде файла.txt..
Я искал ответы в Интернете, но ни одно из них не является правильным решением. Это можно обойти?
Спасибо!
3 ответа
Из архива:: Извлечь официальный документ
"Поскольку файлы.gz никогда не содержат каталог, а содержат только один файл;"
Я бы порекомендовал использовать tar в папке, а затем gz. Таким образом, вы можете использовать Archive::Tar для простого извлечения конкретного файла:
Пример из официальных документов:
$ tar-> extract_file ($ file, [$ extract_path]) Записать запись, имя которой эквивалентно имени файла, предоставленного на диск. При желании принимает второй параметр, который является полным собственным путем (включая имя файла), в который будет записана запись. Например:
$tar->extract_file( 'name/in/archive', 'name/i/want/to/give/it' );
$tar->extract_file( $at_file_object, 'name/i/want/to/give/it' );
Возвращает true в случае успеха, false в случае неудачи.
Надеюсь это поможет.
GZIP-файл может содержать только один файл. Если у вас есть архивный файл, который содержит папку плюс несколько других файлов и папок, то у вас может быть файл gzip, содержащий файл tar. В качестве альтернативы у вас может быть zip-файл.
Можете ли вы дать более подробную информацию о том, как был создан файл архива и список его содержимого?
Может быть, вы можете идентифицировать эти файлы с помощью File::Type, переименовать их с расширением.gz вместо.txt, а затем попробовать Archive::Extract на нем?