2015-08-31 3 views
0

У меня есть каталог с именем test1, который содержит несколько каталогов. В каждом каталоге test1/*/ есть файл *.gz, который я хочу разархивировать. Я пробовал писать этот код, но он не работает, любая помощь будет оценена.Распаковать файлы в подкаталогах bash

for folder in test1/*/; do find . -name "*.gz" | while read filename; do gunzip -d $filename;done ;done 
+0

Что вы имеете в виду под " не работает "? Как это происходит? – melpomene

ответ

0
gunzip test1/*/*.gz 

gunzip будет извлечь файл в каталоге он находится в

0

Вы можете просто сделать это с помощью find:.

cd test1 
find . -name "*.gz" -execdir tar xzf '{}' \; 

Помните, что unzip команда работает только с .zip файлами ,

PS: Если .gz файлы не были созданы с помощью tar czf затем использовать gunzip вместо:

find . -name "*.gz" -execdir gunzip '{}' \; 
+0

И 'tar' работает только с архивами' .tar'. – melpomene

+0

На самом деле это зависит от того, как были созданы файлы '.gz'. Всегда можно использовать tar czf file.gz * .sh' – anubhava

0

я редактировал мою команду и теперь работает:

find ${path} -name "*.gz" | while read filename; do gunzip -d $filename; done 
Смежные вопросы