Supondo que seus caminhos não contenham espaços ou novas linhas:
find . -name \*.tar.\* -execdir sh -c "echo -n \"\${PWD} \"; ls -t *.tar.* | head -n 1" \; | sort -u -k1,1
encontrará todos os tarballs, executará o fragmento de shell fornecido em cada diretório contido e filtrará o resultado para que apenas um resultado seja mantido para cada diretório.
Para visualizar o conteúdo dos tarballs, supondo que seus nomes de arquivo também não contenham espaços ou novas linhas:
find . -name \*.tar.\* -execdir sh -c "echo -n \"\${PWD} \"; ls -t *.tar.* | head -n 1" \; | sort -u -k1,1 | tr ' ' / | xargs -n 1 tar tvf
substituirá o espaço que separa o caminho do nome do arquivo por “/” e passará o resultado para xargs
, que executará tar tvf
em cada arquivo.
Para solicitar entre cada tarball, adicione -p
ao comando xargs
:
find . -name \*.tar.\* -execdir sh -c "echo -n \"\${PWD} \"; ls -t *.tar.* | head -n 1" \; | sort -u -k1,1 | tr ' ' / | xargs -p -n 1 tar tvf