Iterar através de subdiretórios e executar um script awk em certos arquivos

1

Eu tenho um diretório chamado ../words que contém um número de subdiretórios (words / blabla, words / blabla), por sua vez, cada subdiretório contém dois tipos de arquivos (. * 1.txt) e (. * 2. TXT) . O que eu preciso, é para executar um script AWK contra cada um desses arquivos.

Poderia ser algo assim?

for d in words/*
do
    for f in .*[0-9].txt
    do
    awk -f script.awk ${f}
done
done
    
por Firefly 26.02.2016 / 17:07

3 respostas

1

Se você usa um shell moderno como bash ou zsh , pode usar algo como:

for i in words/*/*{1,2}.txt; do awk -f script.awk "$i"; done

Se, por qualquer motivo, você precisar de compatibilidade com /bin/sh , poderá usar essa solução um pouco mais detalhada e menos legível

for i in words/*/*1.txt words/*/*2.txt; do awk -f script.awk "$i"; done 
    
por 26.02.2016 / 18:39
2

Isso deve funcionar:

for f in words/*/.*[12].txt
do
    awk -f script.awk "$f"
done
    
por 26.02.2016 / 18:37
-1

experimente este for d in words/*; do for f in ./words/$d/*{0..9}.txt; do awk -f script.awk $f; done

    
por 26.02.2016 / 17:25