首页 > 解决方案 > 从文件名中提取文本并将文件重命名为 grep 文本?

问题描述

我有许多名称如下的文件。我想用中间的 5 位数字重命名这些文件。例如,重命名N18CMS95WS.12446_950C_wet.txt12446.txt

N18CMS95WS.12446_950C_wet.txt       
N18CMS9WS.12507_900C_wet.txt                
R418WS.15069_800C_wet_air.txt
N18CN85S.13375_850C_dry.txt         
R4195S.13648_950C_dry.txt

我厌倦 grep ".[[:digit:]]_" N18CMS95WS.12446_950C_wet.txt了获得12446文件名中的“,但它不起作用。有人可以帮我吗?

标签: grep

解决方案


如果您有rename

rename -v 's/.*\.([0-9]+)_.*/$1.txt/' *.txt

这是一个替代解决方案:

for file in *.txt; do
  new="${file#*.}"
  new="${new%%_*}"
  mv -v "$file" "$new".txt
done

推荐阅读