2016-07-18 2 views
1

は、私は、ファイルの束を持って言う:追加はファイルが

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

私は出力にテキストファイルに.logにで終わるすべてのものをしたいです.logなし。

の予想される出力(テキストファイル):

blar23123 
blar23131 
blar55532 

私はこれを行うのはかなりやりそこなうの方法を持って、私は.logにせずに、ファイルの新しい別々のファイルを作成します。しかし、100000個のファイルのデータセットを扱っているので、それは徹底した仕事であり、しばらく時間がかかることがあります。

私がやっている何を

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

をそして私は、私はあなたがしたいと思い、それらをリストアップして、txtファイル

答えて

1

にそれらを追加されてきた:

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

${file%.*}は、いわゆるparameter expansionです。この場合、ドットの最短マッチを削除してから、末尾の任意の文字を$fileにします。これにより、ファイル拡張子が効果的に削除されます。

+0

1つだけをtxtファイルに出力します – user3667111

+0

コードをそのまま使用してください。 – hek2mgl

+0

すべての「エコー」の出力をリダイレクトしました。より効率的な 'for'ループの出力をリダイレクトすることを提案しました。 (コードを慎重にチェックしてください) – hek2mgl

関連する問題