Lesen Sie die erste Datei in einer Liste von Dateien in einem Verzeichnis

Lesen Sie die erste Datei in einer Liste von Dateien in einem Verzeichnis

Ich wollte die erste Textdatei in jedem Verzeichnis mit „cat oder vi“ lesen. Um das Problem zu verdeutlichen:

Der Ordner_A1 enthält 1000 Textdateien. Die Dateinamen sind im Format „i.1351“ angegeben. Alle Dateinamen beginnen mit „i.“ und die Nummern sind bei diesen Dateien unterschiedlich.

Ich habe 500 Ordner, jeder davon enthält ca. 1000 Textdateien (*.txt), und ich möchte nur die erste Datei in jedem Ordner lesen. Wie kann ich das tun?

Antwort1

Wenn Sie wirklich die erste Datei in der Verzeichnisreihenfolge möchten und davon ausgehen, dass alle Ordnernamen mit beginnen Folder_, sind alle Einträge, die mit beginnen Folder_, Verzeichnisse und alle Einträge, die mit beginnen, i.Dateien:

for d in Folder_*; do
    for f in "$d"/i.*; do
        cat -- "$f"
        break
    done
done

Antwort2

Dies ist aufgrund der Sortierung etwas langsam.

find . -type f | sort -V | 
awk -F/ '{ dir=substr($0,1,length($0)-length($NF));
           if(last==dir)next; last=dir; print}' |
| xargs cat

Dies -Vdient zum Sortieren i.2vor i.10. Dies awkgibt den Dateinamen bei jedem Verzeichniswechsel aus. (Setzt voraus, dass die Namen keine Leerzeichen enthalten.)

verwandte Informationen