通过第二行内容更改文件名

通过第二行内容更改文件名

我有一个Config.cfg文件,我想通过将第二行的值放入文件名中来重命名它。

例子:

$ more Config.cfg 
!
!  Configuration last changed by user '%LICM%' at Tue Jul  4 15:17:04 2017
!
!
!
global synchronization option 2

预期结果 :

Config Jul  4 15:17:04 2017.cfg

答案1

单程:

  • 使用 sed,提取第二行
  • 使用 awk,提取尾随字段并打印周围的静态文本
  • 如果成功,则使用生成的值重命名该文件

代码:

val=$(sed -n 2p Config.cfg | 
      awk '{print "Config " $(NF-3) " " $(NF-2) " " $(NF-1) " " $NF ".cfg"}')
[[ -n "$val" ]] && mv Config.cfg "$val"

答案2

仅当sed您提取文件名时:

mv file "$(sed -n '/Configuration/s/.*at [^ ]*/Config/p' file)"

相关内容