
「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