读取目录中文件列表中的第一个文件

读取目录中文件列表中的第一个文件

我想使用“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.2i.10awk

相关内容