Powershell - Wie extrahiere ich die erste Zeile von allen text-Dateien in einem Verzeichnis in einer einzigen Ausgabe-Datei?
Ich habe ein Verzeichnis mit über 10'000 text-Dateien unterschiedlicher Länge. Alle über 1GB groß.
Muss ich extrahieren Sie die erste Zeile jeder Datei und legen Sie es in eine neue text-Datei im gleichen Verzeichnis.
Ich habe versucht, die üblichen MS-DOS-batch-Datei-Methode, und es kracht durch die Dateien zu groß.
Gibt es eine Möglichkeit, dies zu tun, in der Powershell mit Streamreader?
- Eine Kombination von
Get-Content
undOut-File
cmdlets gelingen wird, google diese. - Vielen Dank für Ihre... "Hilfreiche" Ratschläge. Tatsächlich Get-Content lädt den gesamten Inhalt einer Datei in den Speicher, bevor Sie etwas tut mit ihm. Ich habe tatsächlich versucht, mit es für große Dateien vor und werden auf einer 1GB-Datei zugewiesen 8GB RAM, verwendet es alle, dann begann die Auslagerung auf den Datenträger für über 8 Stunden, bevor es eine Zeile gezählt. Nicht wirklich ideal für einen job, muss wiederholen 10'000 mal. "Google es" ist nicht wirklich die Art von Beratung, ich bin auf der Suche nach hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Reihenfolge zu Lesen, nur eine Zeile, können Sie auch verwenden :
Mit OutVariable Sie können schreiben Sie es in einer Zeile :
BEARBEITEN: natürlich gibt es in einer integrierten Art und Weise:
[Ack Raf's Kommentar]
Original:
Ich würde vorschlagen, Blick auf
- Datei.ReadLines
: diese Methode liest den Inhalt der Datei faul – nur das Lesen von Inhalten mit jeder iteration über die zurückgegebenen enumerator.Ich bin mir nicht sicher, ob
Select-Object -first 1
wird pro-aktiv Stopp der pipeline nach einer Zeile, wenn es dann funktioniert, das ist der einfachste Weg, um die erste Zeile:Sonst so etwas wie:
NB. dies meint zumindest PowerShell V3 zu verwenden .NET V4.
Kurz und bündig:
Bearbeiten Nov 2018: Nach der Doku "Die TotalCount-parameter beschränkt den Abruf auf die ersten n Zeilen." Dies scheint Minimierung der Ressourcen-Nutzung. Testen Sie es selbst, und fügen Sie Ihre Kommentare.