Leia o primeiro arquivo em uma lista de arquivos dentro de um diretório [duplicado]

0

Eu queria ler o primeiro arquivo de texto em todos os diretórios usando "cat ou vi". Para esclarecer a questão:

O Folder_A1 contém 1000 arquivos de texto. Os arquivos nomeados no seguinte formato "i.1351". Todos os nomes de arquivos começam com "i". e o número é diferente entre esses arquivos.

Tenho 500 pastas, cada uma contendo ~ 1000 arquivos de texto (* .txt) e quero ler apenas o primeiro arquivo de cada pasta. Como posso fazer isso?

    
por Jeff Schaller 29.09.2016 / 16:14

2 respostas

0

Se você realmente deseja o primeiro arquivo na ordem de diretórios, e assumindo que todos os nomes de pastas começam com Folder_ , todas as entradas iniciadas com Folder_ são diretórios e todas as entradas com i. são arquivos:

for d in Folder_*; do
    for f in "$d"/i.*; do
        cat -- "$f"
        break
    done
done
    
por 29.09.2016 / 16:30
0

Isso é um pouco lento por causa do tipo.

find . -type f | sort -V | 
awk -F/ '{ dir=substr($0,1,length($0)-length($NF));
           if(last==dir)next; last=dir; print}' |
| xargs cat

O -V deve classificar i.2 antes de i.10 . O awk imprime o nome do arquivo toda vez que o diretório é alterado. (Assume que os nomes não possuem espaços.)

    
por 29.09.2016 / 16:45