在 Unix 终端中批量重命名文件

Bulk rename files in Unix Terminal

我在一个文件夹中有大约 80 个文件,它们都遵循我需要重命名的相同命名结构。如果我可以用 _ 和 ?然后它应该将文件名分解为我要查找的内容。以下是当前文件名和新文件名的示例。关于如何执行此操作的任何建议?我尝试了一些在线教程,但 none 的教程按预期工作。

当前文件名: abcd_This 是我的文件 name.pdf?xyz

新文件名: 这是我的文件 name.pdf

用 bash 试试这个:

for f in *; do g="${f#*_}"; h="${g%\?*}"; echo "$f -> $g -> $h"; done

${var#*motif} 删除var content左边的最小motif

${var%motif*}删除var content右边的最小motif

之前使用反斜杠?因为它是 UNIX shell 下的特殊字符

要最大化主题,请使用## 或 %% 而不是 # 和 %。