複数のファイルからデータを取得し、ファイル名を追加するBashコマンド

複数のファイルからデータを取得し、ファイル名を追加するBashコマンド

フォルダに/tmp次のファイルがあります(例:)

1.id
2.id
3.id
4.id

まもなく...

このファイルには数値があります。たとえば、は1.idどこにいるのか10002.idはどこにいるのか2000などです。

*.id1行のbashコマンドを使用してすべてのファイル()の値(番号)を自動的に取得し、ファイル名も追加したいと思います。

したがって、出力は次のようになります。

1.id=1000
2.id=2000

答え1

grepこのフォルダでこれを使用してください:

grep "" *.id

出力:

1.id:123
2.id:13
3.id:5
4.id:87876

ところで:私はこれをprocまたはsysfsファイルシステムでよく使用します。

cd /sys/class/net/eth0
grep "" *

これはsysfsのイーサネットインターフェイスに関するすべての情報を提供しますeth0

答え2

使用awk

awk '{printf "%s=%s\n",FILENAME,$0}' *.id

または

awk 'OFS="=" {print FILENAME,$0}' *.id

はい

% awk '{printf "%s=%s\n",FILENAME,$0}' *.id
1.id=1000
2.id=2000

% awk 'OFS="=" {print FILENAME,$0}' *.id
1.id=1000
2.id=2000

% awk '{printf "%s:%s\n",FILENAME,$0}' *.id
1.id:1000
2.id:2000

など。

答え3

これはbash一行です。

for i in *.id; do echo ""$i"=$(<"$i")"; done

例:

$ ls -1
1.id
2.id


$ for i in *.id; do echo ""$i"=$(<"$i")"; done
1.id=10000
2.id=2000

関連情報