
Я хотел прочитать первый текстовый файл в каждом каталоге с помощью "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
Выводит имя файла каждый раз при изменении каталога. (Предполагается, что в именах нет пробелов.)