Eu tenho um arquivo .zip (ele contém vários arquivos, por exemplo, file1.txt
, file2.txt
, file3.txt
) em um diretório.
Como posso extrair os arquivos do arquivo zip para o mesmo diretório? E como posso criar a lista de todos os arquivos extraídos do arquivo zip?
O nome do arquivo extraído deve ser impresso assim no arquivo chamado: file_list:
file1.txt
file2.txt
file3.txt
filen.txt
Eu tentei o seguinte comando assumindo que o nome do meu arquivo .zip é "data.zip".
unzip -qoj data.zip | unzip -ql data.zip > file_list
Eu tenho usado unzip -qoj data.zip
para extrair todos os arquivos no mesmo diretório (silenciosamente, sobrescrever, junk_path). Quando tento inserir -l
com o primeiro comando unzip, o comando não extrai o arquivo no diretório atual e apenas os arquivos são listados. É por isso que tenho que usar o descompactar novamente após o primeiro pipe. (Se eu estou cometendo um erro aqui, por favor me avise.)
Eu recebo a seguinte saída:
Length Date Time Name
-------- ---- ---- ----
0 12-21-09 14:25 data/
6148 12-21-09 14:25 data/.DS_Store
0 12-21-09 14:25 __MACOSX/
0 12-21-09 14:25 __MACOSX/data/
82 12-21-09 14:25 __MACOSX/data/._.DS_Store
82 12-11-09 13:59 data/file1.txt
120 12-11-09 13:59 data/file2.txt
166 12-11-09 13:59 data/file3.txt
-------- -------
6598 8 files
Como faço para extrair apenas file1.txt
, file2.txt
, file3.txt
desta stdout?
É possível fazer isso com um comando do Linux, ou eu tenho que escrever um script perl para isso?