bash - 删除bash目录中文件名开头的数字
问题描述
为了重命名前面有数字的目录中的文件,我在脚本中犯了一个错误,因此这发生在错误的目录中。因此,我现在需要从目录中所有文件名的开头删除这些数字。这些范围从 1 到 3 位。我正在使用的电影名称的示例是:
706terrain_Slope1000m_Minimum_all_25PCs_bolt_all_25PCs_qq_bolt.png
680met_sfcWind_all_25PCs_bolt_number.txt
460greenness_NDVI_500m_min_all_25PCs_bolt_number.txt
我正在考虑使用 mv 但我不确定如何在开始时使用不同数量的数字,所以任何建议都将不胜感激!
解决方案
bash 中的一个简单方法是使用正则表达式测试:
for file in *; do
[[ -f "${file}" ]] && [[ "${file}" =~ (^[0-9]+) ]] && mv ${file} ${file/${BASH_REMATCH[1]}}
done
这将执行以下操作:
[[ -f "${file}" ]]
:测试是否file
是文件,如果是[[ "${file}" =~ (^[0-9]+) ]]
:检查文件是否以数字开头${file/${BASH_REMATCH[1]}}
:file
使用BASH_REMATCH
匹配正则表达式匹配分组的变量从字符串中删除数字。
推荐阅读
- javascript - c.getTimezoneOffset 不是函数
- c# - 如何在 C# 中调试 System.ArgumentOutOfRangeException 错误?
- java - 如何仅使用注释将具有相同类型的bean组合成一个数组?
- javascript - Layzr gem 得到 Uncaught ReferenceError: Layzr is not defined
- python-3.x - 动态分离每个字典键()的数据帧
- java - 动态设置 ImageView.setImageUri 不显示图像
- javascript - 即使工作完成后,Updateprogress 也不会停止或隐藏
- vba - 64 位 Excel 2016 VBA - 不再有 DisplayAlerts?
- c# - CefSharp RegisterJsObject 方法抛出异常对象已经绑定
- python - 跳过或排除字段计算器表达式中的空变量