Как извлечь / удалить старые файлы из обновленного архива

Вот что вы можете сделать, используя SED в версиях GNU и BSD , чтобы удалить первое вхождение чего-либо:

sed '2,/RE/s/\^M//' yourFile

И вот что вы можете сделать, чтобы удалить второе - или n-е - вхождение:

sed '2,/RE/s/\^M//2' yourFile

# Первое - это то же, что sed '2, / RE / s / \ ^ M // 1' yourFile

NB / RE / остановит замену, если какая-то строка содержит RE . Вы можете заполнить его чем угодно. ИЛИ вы можете просто использовать sed '2, $ s / \ ^ M //' yourFile , выбор за вами.

3
01.05.2017, 21:30
1 ответ

От здесь:

--occurrence[=число]

Эту опцию можно использовать в сочетании с одной из подкоманд >-- delete, --diff, --extract или --list, когда список файлов задан >либо в командной строке, либо через -T.

Эта опция указывает tar обрабатывать только числовое вхождение > каждого именованного файла. Число по умолчанию равно 1, поэтому

tar -x -f archive.tar --occurrence имя_файла

извлечет первое вхождение члена filename' из >archive.tar' и завершится без сканирование до конца архива.

Итак, в вашем случае для извлечения старой версии используйте:

tar -xf test.tar --occurrence=1 1

И для запуска удаления:

tar --delete -f test.tar --occurrence=1 1

Другой обходной путь для извлечения обеих версий — просто использовать переключатель --backup:

tar -xf test.tar --backup

It извлечет ваши файлы, например:

1
1~

Который 1~ является старым. Если у вас более двух версий, используйте переключатель -- вхождение .

Вы также можете использовать -w для использования tar интерактивного режима:

tar -xf test.tar -w

На этот раз tar запрашивает каждое действие, вы можете выбрать первое версия или последняя версия для извлечения y/n.

4
27.01.2020, 21:21

Теги

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