Pessoal,
Há uns dias atras precisei extrair de centenas de arquivos compactados [.tar.gz] apenas os arquivos chamados index2.php, cada pacote tem pelo menos 30 subpastas com tais arquivos dentro, logo me encontrei com a tarefa de descompactar 300 arquivos .tar.gz :( e retirar deles os arquivos index2.php. A solucao encontrada foi a combinaçao do proprio comando tar com o shell Bash, é claro tudo isso rodando no FreeBSD :
ls -l /home/nick/*.tar.gz | awk ‘{ print $9 }’ | while read files ; do tar –include=*index2.php -zxvf $files ; done
Usei o awk para filtrar a saida do comando ls -l, trazendo somente o nome do arquivo, e criei um loop atraves do while para executar o tar -zxvf com o argumento –include=*index.php que como o nome ja fala, somente inclui o *index2.php para ser extraido.
Uso muito o loop while para inclusive apagar, concatenar um ´nada´ nos arquivos de logs:
ls -l /var/logs/meus_log_files.log | awk ‘{ print $9 }’ | while read files ; do : > $files ; done
Espero ter ajudado!