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-。
${i/*-doc-/doc-}
*-doc-
doc-
如果您需要进行多个替换(请参见注释1),则需要使用该${var//Pattern/Replacement}变体。如果需要替换名称的开头,则需要使用${var/#Pattern/Replacement},如果需要替换结尾的名称(即,扩展名),则需要使用${var/%Pattern/Replacement}表格。
${var//Pattern/Replacement}
${var/#Pattern/Replacement}
${var/%Pattern/Replacement}
有关更多详细信息,请参见Shell参数扩展。此扩展特定于bash。