我想使用“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