Shell/Bash 中是否有一个快捷方式可以根据正则表达式或其他一些条件重命名文件夹中的所有文件。我在这里寻找的是我的文件夹文档,假设有 100 个具有以下命名约定的文本文件:
<longdocumentidentifier>-doc-<counter>.txt.
我需要将具有上述给定约定的所有文件重命名为:
doc-<counter>.txt
有没有一句话可以帮助我解决上述问题?
我会建议这样的事情:
for i in *-doc-*.txt; do mv "$i" "${i/*-doc-/doc-}"; done
${i/*-doc-/doc-}
替换第一次出现的*-doc-
with doc-
.
如果您需要进行多次替换(参见注释1),您需要使用${var//Pattern/Replacement}
变体。如果您需要替换您需要使用的名称的开头${var/#Pattern/Replacement}
,如果需要替换末尾(即:扩展名),则需要使用${var/%Pattern/Replacement}
form.
See 外壳参数扩展更多细节。此扩展是 bash 特定的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)