Назад | Перейти на главную страницу

Командная строка Linux - поиск файла внутри tar-архива

Я хотел бы проверить, находится ли файл в архиве tar с gzip. Например, я хочу проверить, присутствует ли / etc / passwd в архиве backup_2010-09-27.tar.gz

Глупым решением может быть:

tar -tzf backup_2010-09-27.tar.gz | grep '/etc/passwd'

Но на это нужно время. Есть ли лучшее решение?

Попробуйте это (опустите начальную косую черту):

tar -tzf backup_2010-09-27.tar.gz etc/passwd

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

tar -K etc/passwd -tzf backup_2010-09-27.tar.gz| head -1

Я сомневаюсь в этом.

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

echo etc/passwd | tar -T - -K etc/passwd -Oxzf backup_2010-09-27.tar.gz >/dev/null

$? должно быть ноль

все же, распаковка ....