快速生成 markdown 表格:针对文件列表和文件大小
注:在linux环境或者cygwin环境中操作。
★ 目标
有一些文件,用这些文件生成一个表格(markdown中的表格),表格有两列,一列是文件名,一列是文件大小。
markdown表格大概的样子:
文件名 | 大小 |
---|---|
art.tar.gz | 6.0M |
bionic.tar.gz | 3.7M |
上面这个markdown表格的原始代码为:
| 文件名 | 大小 |
| --- | --- |
| art.tar.gz | 6.0M |
| bionic.tar.gz | 3.7M |
所以,我的目标是将文件名和文件大小整理成| art.tar.gz | 6.0M |
这个形式。
然后加上表格标题(| 文件名 | 大小 |
)和分割线(| --- | --- |
),就完成markdown表格了。
★ 已有文件
已有的文件列表如下:
注:这是android_8.0.0_r17的代码,分目录压缩了。
一共是26个文件。(注:执行ls | wc -l
可以知道文件的数量,不用一个个去数了)
$ ls -l
总用量 13G
-rw-rw----+ 1 galian galian 6.0M 10月 5 07:59 art.tar.gz
-rw-rw----+ 1 galian galian 3.7M 10月 5 07:59 bionic.tar.gz
-rw-rw----+ 1 galian galian 18M 10月 5 07:59 bootable.tar.gz
-rw-rw----+ 1 galian galian 3.1M 10月 5 07:59 build.tar.gz
-rw-rw----+ 1 galian galian 381M 10月 5 08:01 cts.tar.gz
-rw-rw----+ 1 galian galian 1.2M 10月 5 08:01 dalvik.tar.gz
-rw-rw----+ 1 galian galian 277M 10月 5 08:02 developers.tar.gz
-rw-rw----+ 1 galian galian 90M 10月 5 08:02 development.tar.gz
-rw-rw----+ 1 galian galian 168M 10月 5 08:03 device.tar.gz
-rw-rw----+ 1 galian galian 28M 10月 5 08:03 docs.tar.gz
-rw-rw----+ 1 galian galian 1.5G 10月 5 08:11 external.tar.gz
-rw-rw----+ 1 galian galian 918M 10月 5 08:13 frameworks.tar.gz
-rw-rw----+ 1 galian galian 40M 10月 5 08:13 hardware.tar.gz
-rw-rw----+ 1 galian galian 81K 10月 5 08:13 kernel.tar.gz
-rw-rw----+ 1 galian galian 10M 10月 5 08:14 libcore.tar.gz
-rw-rw----+ 1 galian galian 29K 10月 5 08:14 libnativehelper.tar.gz
-rw-rw----+ 1 galian galian 243 10月 5 07:54 makefile.tar.gz
-rw-rw----+ 1 galian galian 144M 10月 5 08:15 packages.tar.gz
-rw-rw----+ 1 galian galian 149K 10月 5 08:15 pdk.tar.gz
-rw-rw----+ 1 galian galian 395K 10月 5 08:15 platform_testing.tar.gz
-rw-rw----+ 1 galian galian 7.9G 10月 5 08:39 prebuilts.tar.gz
-rw-rw----+ 1 galian galian 6.9M 10月 5 08:39 sdk.tar.gz
-rw-rw----+ 1 galian galian 196M 10月 5 08:40 system.tar.gz
-rw-rw----+ 1 galian galian 3.4M 10月 5 08:40 test.tar.gz
-rw-rw----+ 1 galian galian 29M 10月 5 08:40 toolchain.tar.gz
-rw-rw----+ 1 galian galian 1.4G 10月 5 08:42 tools.tar.gz
★ 使用awk
命令快速提取文件名和文件大小
对于ls -l
显示的信息有9列,每一列以空格分割。
例如:
-rw-rw----+ 1 galian galian 6.0M 10月 5 07:59 art.tar.gz
其中第5列是文件大小,第9列是文件名。
用awk提取第5列和第9列:
$ ls -l | awk -F' ' '{print $9 $5}'
art.tar.gz6.0M
bionic.tar.gz3.7M
bootable.tar.gz18M
build.tar.gz3.1M
cts.tar.gz381M
dalvik.tar.gz1.2M
略
这个命令只是验证了可以提取到文件名和文件大小。但是这个样式不是我想要的格式,还需要改进awk命令。需要将文件名和文件大小改造成| art.tar.gz | 6.0M |
这个形式。
加上竖线和空格就好了,命令如下:
ls -l | awk -F' ' '{print "| " $9 " | " $5 " |"}'
可以看到,添加了3个竖线:"| "
," | "
," |"
。加上的空格,是为了美观,并且便于阅读。
执行上面的命令,结果如下(完整的结果):
注:第一行中的| | |
是由于ls -l
的第一行是“总用量 13G”,这一行中没有第5列和第9列。所以为空。不过没有关系,| | |
是有用的,后面还要再加东西。
$ ls -l | awk -F' ' '{print "| " $9 " | " $5 " |"}'
| | |
| art.tar.gz | 6.0M |
| bionic.tar.gz | 3.7M |
| bootable.tar.gz | 18M |
| build.tar.gz | 3.1M |
| cts.tar.gz | 381M |
| dalvik.tar.gz | 1.2M |
| developers.tar.gz | 277M |
| development.tar.gz | 90M |
| device.tar.gz | 168M |
| docs.tar.gz | 28M |
| external.tar.gz | 1.5G |
| frameworks.tar.gz | 918M |
| hardware.tar.gz | 40M |
| kernel.tar.gz | 81K |
| libcore.tar.gz | 10M |
| libnativehelper.tar.gz | 29K |
| makefile.tar.gz | 243 |
| packages.tar.gz | 144M |
| pdk.tar.gz | 149K |
| platform_testing.tar.gz | 395K |
| prebuilts.tar.gz | 7.9G |
| sdk.tar.gz | 6.9M |
| system.tar.gz | 196M |
| test.tar.gz | 3.4M |
| toolchain.tar.gz | 29M |
| tools.tar.gz | 1.4G |
★ 改造成markdown表格
添加上表格标题和分割线,就成了markdown表格,如下
| 文件名 | 大小(单位:字节) |
| -- | -- |
| art.tar.gz | 6.0M |
| bionic.tar.gz | 3.7M |
| bootable.tar.gz | 18M |
| build.tar.gz | 3.1M |
| cts.tar.gz | 381M |
| dalvik.tar.gz | 1.2M |
| developers.tar.gz | 277M |
| development.tar.gz | 90M |
| device.tar.gz | 168M |
| docs.tar.gz | 28M |
| external.tar.gz | 1.5G |
| frameworks.tar.gz | 918M |
| hardware.tar.gz | 40M |
| kernel.tar.gz | 81K |
| libcore.tar.gz | 10M |
| libnativehelper.tar.gz | 29K |
| makefile.tar.gz | 243 |
| packages.tar.gz | 144M |
| pdk.tar.gz | 149K |
| platform_testing.tar.gz | 395K |
| prebuilts.tar.gz | 7.9G |
| sdk.tar.gz | 6.9M |
| system.tar.gz | 196M |
| test.tar.gz | 3.4M |
| toolchain.tar.gz | 29M |
| tools.tar.gz | 1.4G |
显示的效果,如下:
文件名 | 大小(单位:字节) |
---|---|
art.tar.gz | 6.0M |
bionic.tar.gz | 3.7M |
bootable.tar.gz | 18M |
build.tar.gz | 3.1M |
cts.tar.gz | 381M |
dalvik.tar.gz | 1.2M |
developers.tar.gz | 277M |
development.tar.gz | 90M |
device.tar.gz | 168M |
docs.tar.gz | 28M |
external.tar.gz | 1.5G |
frameworks.tar.gz | 918M |
hardware.tar.gz | 40M |
kernel.tar.gz | 81K |
libcore.tar.gz | 10M |
libnativehelper.tar.gz | 29K |
makefile.tar.gz | 243 |
packages.tar.gz | 144M |
pdk.tar.gz | 149K |
platform_testing.tar.gz | 395K |
prebuilts.tar.gz | 7.9G |
sdk.tar.gz | 6.9M |
system.tar.gz | 196M |
test.tar.gz | 3.4M |
toolchain.tar.gz | 29M |
tools.tar.gz | 1.4G |
★ 结语
熟练掌握awk命令,可以方便的处理文本,提高工作效率。