Shell/Bash中是否有一个快捷方式,可以根据正则表达式或其他条件重命名文件夹中的所有文件.我在这里寻找的是我的文件夹文档,它有100个文本文件,具有以下命名约定:
<longdocumentidentifier>-doc-<counter>.txt.
我需要按照上述约定将所有文件重命名为:
doc-<counter>.txt
有没有一个班轮公司可以帮我完成以上工作?
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的.