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相关问答推荐

grep条件仅抓取某些文本

OpenCV编译错误&未定义的引用&Quot;

在树莓派内核中找不到arch/arm/kernel/calls.S

为什么 linux shell diff 命令有时会显示与空行相关的输出,即使存在 -B(--ignore-blank-lines)选项?

使用 bash 命令将文件从子文件夹复制到另一个

Bash shift 改变了关联数组的期望值

在android上使用lldb-server进行lldb调试?

使用 shell 脚本获取 MAC 地址

使用 RPATH 但不使用 RUNPATH?

如何将输出从 grep 传送到 cp?

使用 linux 命令行 (bash) 从网络摄像头拍照

nvm:无法卸载当前活动的 node 版本

execv() 和 fork() 的时间浪费

Linux AMD64 中如何使用 fs/gs 寄存器?

如何获取/使用 LibUUID?

使用sudo apt-get install build-essentials

cat、grep 和 cut - 翻译成 python

卸载从源代码构建的python?

ImportError:在 ubuntu 14.04 中没有名为 _io 的模块

Linux:删除多个文件的文件扩展名