grep - 从文件名中提取文本并将文件重命名为 grep 文本?
问题描述
我有许多名称如下的文件。我想用中间的 5 位数字重命名这些文件。例如,重命名N18CMS95WS.12446_950C_wet.txt
为12446.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
文件名中的“,但它不起作用。有人可以帮我吗?
解决方案
如果您有rename
:
rename -v 's/.*\.([0-9]+)_.*/$1.txt/' *.txt
这是一个替代解决方案:
for file in *.txt; do
new="${file#*.}"
new="${new%%_*}"
mv -v "$file" "$new".txt
done
推荐阅读
- node.js - 如何为嵌套数据设计猫鼬模式设计
- excel - 将数据从一个工作簿复制到另一个工作簿的最后一行
- python - 何时使用“For Loop vs List Comprehension”创建新列表?
- ios - 有什么方法可以在没有开发人员帐户的情况下共享我的 iPhone 应用程序进行测试?
- bash - 即使在 RedHat 中安装 vim 后我也无法使用 vi
- html - 将段落置于第一段之下
- eclipse - 无法安装黄瓜eclipse插件
- xml - 如何在 Postgres 11 和 Postgres 9.1.2 中解析 XML
- java - 确认输入的问题
- c# - 如何使用自定义纵横比统一构建项目?