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-
替换了第一次出现的 doc-
。如果您需要进行多次替换(请参阅注释编号 1),则需要使用
${var//Pattern/Replacement}
变体。如果需要替换名称的开头需要使用 ${var/#Pattern/Replacement}
,如果需要替换结尾(即:扩展名)需要使用 ${var/%Pattern/Replacement}
形式。有关更多详细信息,请参阅 Shell Parameter Expansion。此扩展是特定于 bash 的。
关于linux - 用于批量重命名文件夹中文件的 Shell/Bash 快捷方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8416990/