linux - mv 将文件名重命名为 _*_
问题描述
举个例子,我的文件名是 A_BC_DEF_GH_IJ_LMNO_PQ_11111111_1111111111_111111_AB.dat.meta
我正在尝试使用 unix 命令重命名它,但是当我尝试使用这个 cmd
for f in *.meta; do mv "$f" "$(echo $f|sed s/[0-9]/?/g|sed 's/-/*/g')" ; done
我的文件重命名为
A_BC_DEF_GH_IJ_LMNO_PQ_????????_????????????????????_???????_AB.dat.meta
预计将文件重命名为
A_BC_DEF_GH_IJ_LMNO_PQ__????????_????????????????????_*_AB.dat.meta
我对 unix cmd 很陌生,我应该尝试什么方法?
解决方案
A_BC_DEF_GH_IJ_LMNO_PQ_11111111_1111111111_111111_AB.dat.meta
将其与正则表达式匹配。记住哪些字符需要在 sed 中转义。记住正确的引用——如果你写的$
话,它应该在里面"
。请注意,如果没有命名的文件*.meta
,它将仅遍历字符串*.meta
,除非nullglob
已设置。
$ touch A_BC_DEF_GH_IJ_LMNO_PQ_11111111_1111111111_111111_AB.dat.meta
$ for f in *.meta; do mv "$f" "$(echo "$f" | sed 's/[0-9]/?/g; s/_\(?*\)_\(?*\)_\(?*\)_\([^_]*\)$/__\1_\2_*_\4/')" ; done
推荐阅读
- android - 如何以编程方式更改 AppBarLayout 偏移量?
- mysql - 我的 sql 语法有一个错误,因为键 'PRIMARY' 的重复条目 ''
- mysql - 如何在 Golang 中使用另一个数组的 ID 填充数组
- python - 如何将行值休息到另一个数据帧的第 n 行值
- electron - 有没有一种简单的方法来丑化/缩小电子项目?
- php - 传递给 yii\db\conditions\HashConditionBuilder::build() 的参数 2 必须是数组类型,Yii2 中给出的字符串
- python-3.x - 把一个str变成一个合理的列表python初学者
- c# - 如何读取在 .Net 中返回字符串的 Delphi 函数?
- python - 解释训练损失/准确性与验证损失/准确性
- refresh - (ncurses) - mvwaddch() 是否调用 wrefresh()?