
Quería leer el primer archivo de texto en cada directorio usando "cat o vi". Para aclarar el tema:
La Carpeta_A1 contiene 1000 archivos de texto. Los archivos denominados en el siguiente formato "i.1351". Todos los nombres de archivos comienzan con "i". y el número es diferente entre estos archivos.
Tengo 500 carpetas, cada una contiene ~1000 archivos de texto (*.txt) y quiero leer solo el primer archivo de cada carpeta. ¿Cómo puedo hacer eso?
Respuesta1
Si realmente desea el primer archivo en el orden del directorio, y asumiendo que todos los nombres de las carpetas comienzan con Folder_
, todas las entradas que comienzan con Folder_
son directorios y todas las entradas que comienzan con i.
son archivos:
for d in Folder_*; do
for f in "$d"/i.*; do
cat -- "$f"
break
done
done
Respuesta2
Esto es un poco lento debido al 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
El -V
es ordenar i.2
antes i.10
. Imprime awk
el nombre del archivo cada vez que cambia el directorio. (Se supone que los nombres no tienen espacios).