ディレクトリ内のファイルリストの最初のファイルを読み取る

ディレクトリ内のファイルリストの最初のファイルを読み取る

「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

関連情報