2016-07-18 10 views
1

mit .log zu einer txt-Datei zu beenden, ich habe eine Reihe von Dateien haben:Anfügen von Dateien, die ohne die .log

blar23123.log 
blar23131.log 
blar11111.txt 
blar55532.log 

ich ausgeben möchte, dass alle diejenigen, die in der .log in eine Textdatei zu beenden ohne das .log.

Erwarteter Ausgang (Textdatei):

blar23123 
blar23131 
blar55532 

Ich habe einen ziemlich botch Weg, dies zu tun, erstelle ich die Dateien eine neue separaten Dateien ohne die .log. Aber während ich an Datensätzen von 100000 Dateien arbeite, kann es eine erschöpfende Arbeit sein und eine Weile dauern.

Was ich getan habe:

for file in *.log; do cp -- "$file" "${file%%.log}"; done 

Und dann habe ich wurde ihnen Notierung und sie dann in eine txt-Datei anhängt

Antwort

1

Ich glaube, Sie wollen:

for file in *.log ; do 
    echo "${file%.*}" 
done > output.txt 

${file%.*} ist eine sogenannte parameter expansion. In diesem Fall wird die kürzeste Übereinstimmung eines Punkts gefolgt von beliebigen Zeichen vom Ende für $file entfernt. Dies wird die Dateierweiterung effektiv entfernen.

+0

Gibt nur einen an die txt-Datei aus – user3667111

+0

Verwenden Sie den Code wie er ist und es wird funktionieren – hek2mgl

+0

Sie haben die Ausgabe von jedem Echo umgeleitet. Ich schlug vor, die Ausgabe der for-Schleife umzulenken, die effizienter ist. (Überprüfen Sie den Code sorgfältig) – hek2mgl

Verwandte Themen