Прочитать первый файл в списке файлов в каталоге

Прочитать первый файл в списке файлов в каталоге

Я хотел прочитать первый текстовый файл в каждом каталоге с помощью "cat или vi". Чтобы прояснить проблему:

Папка Folder_A1 содержит 1000 текстовых файлов. Файлы названы в следующем формате "i.1351". Все имена файлов начинаются с "i." и номер у этих файлов разный.

У меня 500 папок, каждая из которых содержит ~1000 текстовых файлов (*.txt), и я хочу прочитать только первый файл в каждой папке. Как мне это сделать?

решение1

Если вам действительно нужен первый файл в порядке каталогов, и если предположить, что все имена папок начинаются с Folder_, то все записи, начинающиеся с , Folder_являются каталогами, а все записи, начинающиеся с , i.являются файлами:

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

решение2

Из-за сортировки это немного медленно.

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

Для -Vсортировки i.2перед i.10. awkВыводит имя файла каждый раз при изменении каталога. (Предполагается, что в именах нет пробелов.)

Связанный контент