У меня есть файл .tar.gz, в котором несколько папок. Каждая папка имеет несколько файлов, и я хочу извлечь SNAPSHOT .jar из всех папок, которые находятся под ней.
Я пытался использовать подстановочные знаки, но это не помогло. Пример:
tar -xf samplejars.tar.gz --wildcards "*SNAPSHOT*.jar"
В файле samplejars.tar.gz есть много папок, и я хочу только извлечь SNAPSHOT .jar. Как я могу это сделать?
Всего 3 ответа
Я проверил это со следующей структурой папок:
data/
data/a
data/a/ANOTHER_SNAPSHOT.jar
data/b
data/c
data/c/SNAPSHOT.jar
data/d
data/e
data/f
data/f/SNAPSHOT.jar.with.extension
data/g
data/g/SNAPSHOT.jar
data/h
Следующая маска подстановки работает и извлекает только те файлы, которые соответствуют SNAPSHOT.jar, а не SNAPSHOT.jar.with.extension и ANOTHER_SNAPSHOT.jar
tar -xf data.tar.gz --wildcards "*/SNAPSHOT.jar"
Результат:
data/c/SNAPSHOT.jar
data/g/SNAPSHOT.jar
Вы можете использовать xargs для этого:
tar -tf data.tar.gz | grep SNAPSHOT.jar | xargs tar -xf data.tar.gz
Вы можете создать файл с шаблоном, который вы ищете:
echo "*SNAPSHOT*.jar" > filename
Затем вы можете использовать ключ --files-from:
tar -xf samplejars.tar.gz --files-from=filename
Я проверил с
data/
data/a/
data/a/ANOTHER_SNAPSHOT.jar
data/b/
data/c/
data/c/SNAPSHOT.jar
data/d/
data/e/
data/f/
data/f/SNAPSHOT.jar.with.extension
data/g/
data/g/SNAPSHOT-2.jar
data/g/SNAPSHOT.jar
data/h/
Результат
data/a/ANOTHER_SNAPSHOT.jar
data/c/SNAPSHOT.jar
data/g/SNAPSHOT-2.jar
data/g/SNAPSHOT.jar