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/52542493/