Sie könnten den rename
Befehl verwenden, die eigentlich ein Perl-Skript ist, wie folgt:
rename --dry-run 'my $fn=$_; open my $fh,"<$_"; while(<$fh>){}; $_=$fn; s/.txt$/-$..txt/' *txt
Beispielausgabe
'tight_layout1.txt' would be renamed to 'tight_layout1-519.txt'
'tight_layout2.txt' would be renamed to 'tight_layout2-1122.txt'
'tight_layout3.txt' would be renamed to 'tight_layout3-921.txt'
'tight_layout4.txt' would be renamed to 'tight_layout4-1122.txt'
Wenn Sie mögen, was sie sagt, entfernen Sie die --dry-run
und führe es nochmals aus.
Das Skript zählt die Zeilen in der Datei ohne Verwendung von externen Prozessen und benennt sie dann wie Sie fragen, auch ohne Verwendung externer Prozesse, also ziemlich effizient.
Oder, wenn Sie glücklich sind, einen externen Prozess aufzurufen, um die Linien zu zählen, und vermeiden Sie das Perl-Methode oben:
rename --dry-run 's/\.txt$/-`grep -ch "^" "$_"` . ".txt"/e' *txt
Sie sprechen sind die Ausgabe von WC auf das Ende des Namens ein Anheften Datei oder am Ende des Inhalts einer Datei? Bearbeiten Sie Ihre Frage, um eine übersichtliche, testbare Eingabe und erwartete Ausgabe zu erhalten. Ich bin erstaunt, dass du 4 upvotes für eine Frage ohne ein Beispiel hast! Ich habe mehrere Fragen gesehen, wo Leute das Skripttrennzeichen '' s ** in das Skript einfügen ** - ('awk {'foo'}' anstelle von 'awk' {foo} '') - wo zum Teufel ist DAS Idee kommt von ??? –