我在一个文件夹(例如/tmp
)中有以下文件
1.id
2.id
3.id
4.id
很快...
在这些文件中,里面有一个数字。例如,其中1.id
可以是 the 1000
,其中2.id
可以是 the2000
等。
我想要一个一行 bash 命令来自动获取所有这些文件的值(数字)(*.id
),但还附加它的文件名。
所以输出应该是:
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