「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