我有一个这样的文件列表:
-rw-r--r-- 3 knsdkls users 336207616 2014-11-10 07:15 /hive/some/thing/path/location/data/plants/zombies/Filename.txt
从这里,我想提取文件大小和文件名。
我试过 awk:
awk '{print $5,$NF}'
给出:
336207616 /hive/some/thing/path/location/data/plants/zombies/Filename.txt
我愿意:
336207616 Filename.txt
请指导我。 此外,文件路径中的子目录数量不是恒定的。
谢谢。
最佳答案
通过awk的split
函数。
$ awk '{n=split($NF,a,"/");print $5,a[n]}' file
336207616 Filename.txt
解释:
split($NF,a,"/")
根据分隔符/
拆分最后一个字段,并将拆分后的部分存入数组一个
。拆分部分的总数存储在一个名为n
的变量中。因此对于这种情况,变量n
包含10
。
中存储的最后一个元素print $5,a[n]
这会打印第五个字段加上数组a
关于bash - awk:从完整路径中提取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27099071/