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

标签 linux bash file-io scripting

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/

相关文章:

linux - bash 脚本中的语法错误 : "(" unexpected -- with ! (*.sh)

c# - 从代码执行时 Handle.exe 不工作

java - 将 URL 解析为 ImageIcon 时出现 NullPointerException

php - 使用纯 PHP 验证两个文件是否相同?

linux - 如何将 -I 和 -n 与 xargs 结合起来?

linux - 如果脚本中有任何依赖关系,yum 可以中止软件包删除吗?

c - 查看大文件时进程级别发生了什么?

c - 从 NASM 函数返回字符数组

bash - 通过索引访问 $*(或 $@)的元素

环境中缺少 PYTHONPATH