Rename

通過它的第 2 行內容更改文件名

  • August 1, 2017

我有一個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

單程:

  • 使用 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"

只有sed您提取文件名:

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

引用自:https://unix.stackexchange.com/questions/383100