一尘不染

Shell / Bash快捷方式,用于批量重命名文件夹中的文件

linux

Shell /
Bash中是否有快捷方式,可以根据正则表达式或某些其他条件来重命名文件夹中的所有文件。我在这里寻找的是我的文件夹文档,其中有一个100文本文件,具有以下命名约定:

<longdocumentidentifier>-doc-<counter>.txt.

我需要将所有具有上述约定的文件重命名为:

doc-<counter>.txt

有没有一种单线可以帮助我解决上述问题?


阅读 237

收藏
2020-06-02

共1个答案

一尘不染

我建议这样的事情:

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参数扩展。此扩展特定于bash。

2020-06-02