bash - awk:从完整路径中提取文件名

标签 bash shell awk scripting

我有一个这样的文件列表:

-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/

相关文章:

bash - 在 BASH shell 中随机排列数组元素的简单方法?

regex - 从文件中删除重复行

linux - 列偶尔为空时的 Awk 处理

bash - 将 curl 响应的特定部分保存到变量

linux - Azure Cloud shell 始终显示 "command not found"

linux - 在 Linux shell 脚本中处理通配符

linux - linux中月份和日期之间的空间问题

linux - 使用循环读取 bash 脚本中的文件

bash - 检查程序中的错误代码-特别是HTK Toolkit

regex - Linux命令替换标准输入中没有 '\n'的字符