Попытка разархивировать определенные файлы в конкретном каталоге

Вопрос или проблема

У меня есть bash-скрипт, который извлекает файлы из .rar файла. Я хочу извлечь только *.foo и mydirectory/*.bar. Я следовал этой инструкции по извлечению конкретных файлов с помощью подстановочных символов, чтобы получить первую группу файлов, но это не сработало для второй. Я пробовал использовать unrar -x blah.rar mydirectory/\*.bar (и просто *), но это ничего не дало, и unrar -x blah.rar mydirectory, что просто дало мне пустую директорию с именем mydirectory/. Оставив последний слэш, я также ничего не получил.

Ответ или решение

Для извлечения специфических файлов из .rar архива с использованием bash-скрипта, важно понимать, как работает команда unrar. Давайте рассмотрим, как можно эффективно извлечь файлы с расширением *.foo и файлы из директории mydirectory/ с расширением .bar.

Понимание команды unrar

Команда unrar предоставляет множество опций для работы с архивами. Для извлечения определённых файлов из архива необходимо использовать правильный синтаксис, что особенно важно при работе с шаблонами и подкаталогами.

Извлечение файлов с расширением *.foo

Для извлечения всех файлов с расширением .foo из архива, команда будет выглядеть следующим образом:

unrar e blah.rar *.foo

В этом случае флаг e означает извлечение файлов в текущую директорию. Обратите внимание, что команду нужно выполнять в том каталоге, где находится архив.

Извлечение файлов из подкаталога mydirectory/

Здесь стоит учесть, что при извлечении файлов с использованием подкаталогов, вам может понадобиться указать полный путь к файлам в архиве. Стандартная команда для извлечения всех .bar файлов из mydirectory/ будет следующей:

unrar e blah.rar mydirectory/*.bar

Однако, если вы сталкиваетесь с проблемой, что директория пустая или файлы не извлекаются, убедитесь, что файлы действительно присутствуют в архиве. Для этого можно выполнить следующую команду для просмотра содержимого архива:

unrar l blah.rar

Объединение команд для извлечения

Вы можете объединить оба запроса в вашем скрипте, чтобы одновременно извлечь и файлы с расширением .foo, и файлы из mydirectory/ с расширением .bar. Это возможно благодаря следующему:

unrar e blah.rar *.foo
unrar e blah.rar mydirectory/*.bar

Использование циклов в скрипте

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

#!/bin/bash

# Извлекаем .foo файлы
unrar e blah.rar *.foo

# Извлекаем .bar файлы из mydirectory
unrar e blah.rar mydirectory/*.bar

Заключение

При работе с командами на bash важно проверять наличие необходимых файлов в архиве и использовать правильный синтаксис. Убедитесь, что используете актуальную версию unrar, так как разные версии могут вести себя по-разному. Проверьте содержимое архива, чтобы удостовериться в корректности путей и имен файлов. Следуя данным рекомендациям, вы сможете успешно извлечь необходимые файлы из архива.

Оцените материал
Добавить комментарий

Капча загружается...