Возможный дубликат:
Могу ли я извлечь определенную папку с помощью tar в другую папку?
Я новичок в мире Linux и хотел бы знать, могу ли я извлечь определенный файл или каталог, присвоив ему новое имя или путь. Например, если в моем архиве есть папки sample1, sample2 и sample3, я хотел бы иметь возможность извлечь sample3, но как sample4. Тот же вопрос относится к файлам.
Есть два способа выполнить эту задачу.
смола имеет -s
вариант, определяемый следующим образом:
-s шаблон
Измените имена файлов или элементов архива в соответствии с шаблоном. Шаблон имеет формат / старый / новый / [gps]. old - это базовое регулярное выражение. Если это не применимо, узор пропускается. new - это строка замены совпадающей части. ~ заменяется совпадением, от 1 до 9 - содержимым соответствующей захваченной группы. Необязательный следящий g указывает, что сопоставление должно продолжаться после сопоставленной части и останавливаться на первом несовпадающем шаблоне. Необязательный завершающий s указывает, что шаблон применяется к значению символических ссылок. Необязательный завершающий p указывает, что после успешной замены исходное имя пути и новое имя пути должны быть напечатаны со стандартной ошибкой.
Вы можете запустить tar xf <archive file> -s /sample3/sample4/
для достижения желаемого результата.
tar может извлекать файлы прямо в стандартный вывод, после чего вы можете использовать стандартные операции перенаправления файлов Unix чтобы направить вывод в файл с любым именем.
Пример: tar xf <archive file> -O sample3 > sample4
Обратите внимание, что имя файла "sample3" не является аргументом для -O
параметр; он используется tar для ограничения извлечения только этим файлом. Если вы не указали sample3
, тогда tar извлечет все файлы из архива и объединит их в один большой несжатый выходной файл.