Atualizar Desculpe, você também queria o nome do diretório mais popular. Eu atualizei o comando para incluir um 'else'. Se apenas um diretório for encontrado, ele irá ecoar seu nome. Se 'ERROR for lançado, você pode apenas visualizar o conteúdo de' test.file 'para ver quais diretórios estão no tar.
Tente isto:
$ zcat test.tar.gz | tar xvf - | \
awk -F/ '{print $1}' | \
uniq > test.file && \
if (($(wc -l 'test.file' | \
awk '{print $1}')>1));then echo "ERROR";else cat test.file;fi
man zcat
zcat é idêntico ao gunzip -c. (Em alguns sistemas, o zcat pode ser instalado como gzcat para preservar o link original para compactação). O zcat descompacta uma lista de arquivos na linha de comandos ou sua entrada padrão e grava os dados descompactados na saída padrão. O zcat descompactará arquivos que tenham o número mágico correto, tenham ou não um sufixo .gz.
awk -F / '{print $ 1} | uniq
Imprime a primeira palavra marcada por '/', que é única.
> test.file
Gravar saída para o arquivo
(($ (wc -l 'test.file' | awk '{print $ 1}') > 1))
A construção dupla ((..)) permite a expansão e avaliação aritmética. wc -l
obtém contagem de linhas no arquivo. awk '{print $1}')>1
obtém somente a primeira coluna, que é o número da contagem de linhas e vê se esse número é maior que 1. then echo "ERROR"
print 'ERRO' se mais de um diretório for encontrado no arquivo tar.
Espero que ajude.