Procura por arquivos dentro de múltiplos subdiretórios e diretórios zip [duplicados]

2

Eu preciso extrair mais de 2k arquivos de 1000 pastas ... o problema é que cada pasta tem uma pasta zipada dentro e dentro desta pasta, existe outra pasta chamada "fileholder" que contém algum tipo de arquivo temp.processed que eu preciso para obter. Existe alguma maneira de procurar todos esses arquivos e copiá-los para outro local? ou eu tenho que extrair todos os arquivos zip?

Eu corri:

 find -type f -iname \*.PROCESSED

mas isso não pesquisa dentro dos arquivos compactados. Alguém pode me indicar a direção certa?

    
por user3311890 10.07.2016 / 18:24

1 resposta

2

Eu faria isso em duas find chamadas:

  • Um para encontrar todos os arquivos zip e processá-los
  • Outro para lidar com os arquivos regulares

Isso é um pouco complicado, a parte complicada é a chamada awk . Ele processa a saída de unzip -l , que não é muito amigável ao script. Ele procura por linhas que começam com números (para se livrar dos cabeçalhos), se livra de linhas vazias e finalmente corresponde a .process de uma maneira que não diferencia maiúsculas e minúsculas.

FINDDIR="."
for f in 'find "$FINDDIR" -type f -iname '*.zip''; do
  dir='dirname "$f"'
  for p in 'unzip -l sth.zip | awk '{if (match($1, /^[0-9]+$/) && $1 > 0 && match(tolower($4), /\.processed$/)) print $4}''; do
    echo "$dir/$p"
done
find "$FINDDIR" -type f -iname '*.processed'

Isso não pode lidar com zip s recursivas, ou seja, se um arquivo zip estiver dentro de outro arquivo zip.

    
por 10.07.2016 / 19:13