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