如何在VSCode中重命名多个文件(Visual Studio Code)?

70

我想知道在Visual Studio Code中是否有一种方法可以批量重命名文件?我尝试使用查找和替换,但没有成功。


1
重命名多个文件 - 一个一个来吗?查找和替换适用于内部内容! - Am_I_Helpful
有一个名为multiple file renamer的vscode扩展,但它并不是很受欢迎,所以我选择使用本地批量重命名(在我的情况下是在Mac上)。 - Urs
12个回答

79

以下是在 Mac 上如何操作。右键单击(或如果您使用的是 MacBook,则在触控板上同时点击两个手指或按下ctrl+click),然后单击包含要重命名文件的文件夹,然后单击Reveal In Finder. 然后从Finder中选择所有要重命名的文件,右键单击所选文件,选择Rename X items...。然后你会看到类似这样的东西:

图片描述

插入您想要查找的字符串和要替换该找到的字符串的字符串,然后点击重命名。完成


6
此外,如果您想要在多个目录中重命名多个项目,您可以使用Finder的搜索框搜索模式,选择所有结果并单击“重命名X项...”。 - elliottregan
11
在我看来,这并不是问题的答案。其他操作系统的用户怎么办? - Wojciech Kałuski
Wojciech是对的,如果能够得到一个包括99%使用面向工作操作系统(如Linux或Windows)的人们的答案,那将是非常好的。 - itpropro
因为使用Mac而被踩了一下。因为没有回答问题而被踩了一下。 - undefined

43

有一些Visual Studio扩展程序试图提供此功能。

我尝试的前两个似乎不起作用。但是有一个叫做“批量重命名”(Batch Rename)的扩展程序对我有用:https://marketplace.visualstudio.com/items?itemName=JannisX11.batch-rename-extension

以下是该扩展程序的使用方法:

  1. 在资源管理器中选中要重命名的文件,右键单击并选择“批量重命名”
  2. 该扩展创建一个文本文件,其中包含要重命名的文件名,每行一个。更新文本文件以显示新名称。
  3. 保存第2步中的临时文本文件,然后扩展程序执行重命名操作。

现在的过程有点不同,但效果相同。请注意,它仅影响所选文件,因此如果您想更改文件夹内的文件,则必须展开此文件夹并选择其文件。 - alexbrina
@harleybl 当我右键点击时,没有这样的上下文菜单选项... - CatarinaRuna
1
@CatarinaRuna - 看起来我把错误的URL放到了插件里。我安装的插件在这里:https://marketplace.visualstudio.com/items?itemName=JannisX11.batch-rename-extension。我已经更新了正确的URL。 - harleybl
@CatarinaRuna 我曾经遇到过类似的问题,这个扩展只能在文件上工作,而不能在文件夹上工作。 - pensono

17

VS Code仅支持单个文件名。在Windows上,要进行批量重命名,您可以使用以下其中之一

[CMD]

// Change the extensions of all .doc files to .txt
ren *.doc *.txt

// Replace the first three characters of all files starting with 'abc' by 'xyz'
ren abc* xyz*


[PowerShell]
Get-ChildItem *.txt | Rename-Item -NewName { $_.Name.Replace('.txt','.log') }

这里可以找到一份全面的教程


6
brew install rename
rename s/foo/bar/g **/*

这绝对是最优雅的答案,前提是 OP 理解 sed 模式。 - WoodyWoodsta

2

目前,VS Code尚无此类功能或扩展程序。但是可以使用VS Code终端作为命令提示符,并在您想要将所有文件名从一个更改为另一个的文件夹上运行此命令,例如我想将所有视图文件从HTML更改为PHP。

rename *.html *.php

2

Visual Studio Code目前还没有这个选项...

但是在Sublime Text中,通过dired插件,您可以使用Shift+R进入重命名模式。
这将为您提供一个带有每个文件的行的缓冲区:

D:\path\to\myfolder

first.file
second.file
third.file
...
umpteenth.file

 Rename files by editing them directly, then:
 Ctrl+Enter = apply changes
 Ctrl+Escape = discard changes

在重命名模式下,您可以使用文本编辑器的全部功能:使用多个光标同时编辑所有文件名,转置字符串(以一举完成切换重命名操作),查找和替换, Text Pastry package 可以为您提供数字范围等等。 vscode-dired 将无法让您这样做,重命名是逐个进行的。

2
我发现了一个很方便的工具叫做批量重命名。它非常适合用来重命名文件。然而,如果你需要递归地处理大量的文件,我最喜欢的方法如下:
你可以在终端中使用find命令和rename命令来实现这个目标。以下是一个逐步指南:
在这个例子中,我想将所有的.js文件重命名为.jsx
  1. 打开终端:

    您可以通过在应用程序菜单中搜索“终端”或按下Ctrl + Alt + T来打开终端。

  2. 导航到主文件夹(文件夹A):

    使用cd命令更改目录。例如,如果您的文件夹A位于主目录中,您可以像这样导航到它:

    cd ~/A
    
  3. 运行find命令以定位所有.js文件:

    使用以下命令:

    find . -type f -name "*.js"
    

    这将递归列出当前目录及其子目录中的所有.js文件。

  4. 使用rename重命名文件:

       find . -type f -name "*.js" -exec sh -c 'mv "$0" "${0%.js}.jsx"' {} \;
    

    命令的解释:

    • find . -type f -name "*.js":查找所有具有.js扩展名的文件(不包括目录)。
    • -exec sh -c 'mv "$0" "${0%.js}.jsx"' {} \;
    • sh -c '...'告诉shell执行以下命令。
    • mv "$0" "${0%.js}.jsx":将文件从.js重命名为.jsx
    • $0指的是find找到的文件名。
    • "${0%.js}.jsx"使用参数扩展将.js扩展名替换为.jsx
  5. 验证更改:

    您可以使用ls列出目录中的文件,并验证它们是否已被重命名。

记得在运行任何修改文件的命令之前备份你的数据,以确保安全。

我使用这个,但它不会更新引用,就像你一次只更新一个文件那样。 - undefined

1

0
无法在VSCode中同时重命名多个文件。 我发现最简单的方法是使用免费的“everything”实用程序,只需几秒钟即可重命名一个或多个文件夹中的一堆文件。
  1. 打开“everything”并过滤文件列表。
  2. 选择要更改的文件
  3. 使用右键选择“Change Name”
  4. 弹出窗口将显示旧列表、新列表、旧名称和新名称,如果您更改了新名称,则新列表也会相应更改。

-3
也许最简单、更详细的方法是使用 VSCode 的终端选项卡(Ctrl/Cmd + J),并从下拉菜单中选择Powershell选项:

Terminal/shell options

基于Kin的回答Kin提供的资源(第二页),为了查看当前文件夹及其所有子文件夹,以下是一些有用的重命名方法:

扩展名重命名

ls -R *.txt | Rename-Item -NewName {[io.path]::ChangeExtension($_.name, "log")}

选择 txt 文件并将它们的扩展名改为 log

名称+扩展名重命名

Get-ChildItem -R *.txt | Rename-Item -NewName {$_.name.Replace('.txt','-text.log')}

选择 txt 文件并将它们重命名为 [ORIGINAL_NAME]-text.log

NEW_NAME+NUMBER+extension 重命名(原始名称被丢弃)

Get-ChildItem -R *.txt | %{Rename-Item $_ -NewName ("NEW_NAME-{0}.log" -f $nr++)}

选择 txt 文件并将它们重命名为 [NEW_NAME]-NUMBER.log

工作原理:

  • lsGet-ChildItem 命令的别名(在 Powershell 中等效),用于列出当前目录中的文件;
  • -R 选项允许进行递归查找
  • 列出的结果被导入到多个 Rename-Item 命令中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接