2017-09-22 4 views
-2

私は複数のファイルを持っており、ファイル名を新しいフィールドとして各通信ファイルに入れる必要があります。ファイル名をperlまたはshellを使用して同じファイルに挿入します。

例:各ファイルに私が持っている

My directory 

Sample1.txt Sample3.txt 
Sample2.txt Sample4.txt 

ヘッドSample1.txt

hg1 1 20 
hg1 40 60 

私はそれを手動で行うことができ、各ファイル

head Sample1.txt 

hg1 1 20 Sample1 
hg1 40 60 Sample1 

のために必要がありますが、Iたくさんのファイルがあります。誰かがループを使ってすべてのファイルを作るのを助けることができますか?

は、私がテストを使用し、上記の例では、あなたに

答えて

0
#!/bin/bash 

for vari in $(ls test?); do 
    gawk -v fname=$vari '{print $0 " " fname}' $vari > $vari.bak 
    mv -f $vari.bak $vari 
done 

ありがとうございましたか! ;最終的な答えには、ファイル名のパターンか、文字通り入力ファイルのリストが必要です。これは機能します。