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

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

Eu queria ler o primeiro arquivo de texto em cada diretório usando “cat ou vi”. Para esclarecer a questão:

A Pasta_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 cerca de 1000 arquivos de texto (*.txt) e quero ler apenas o primeiro arquivo de cada pasta. Como eu posso fazer isso?

Responder1

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

for d in Folder_*; do
    for f in "$d"/i.*; do
        cat -- "$f"
        break
    done
done

Responder2

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é classificar i.2antes i.10. Imprime awko nome do arquivo sempre que o diretório é alterado. (Pressupõe que os nomes não contenham espaços.)

informação relacionada