如何在目录中更改多个文件的扩展名?

64
假设我有一个目录下的大量文件都以 .txt 为扩展名。
使用以下命令行环境,如何将所有这些文件的扩展名更改为 .c
  • Windows 中的 Powershell
  • Windows 中的 cmd/DOS
  • bash 终端

6
不确定为什么这个问题被关闭了(对我来说问题似乎很清楚),但无论如何,基本上相同的问题可以在这里找到(开放):https://dev59.com/d2Yr5IYBdhLWcg3wy9OA#13382966 - Ohad Schneider
2
@OhadSchneider 有点像...不幸的是,那个问题的标题(虽然实际用例并非如此)是“如何在PowerShell中批量重命名文件?”,这更加广泛,答案也是如此。Smi在这里提供了很好的扩展解决方案。但仍然不知道为什么会被标记为过于宽泛。¯\(ツ) - ruffin
1个回答

140

在Windows上,进入所需的目录,然后键入:

ren *.txt *.c

在PowerShell中,最好使用Path.ChangeExtension方法而不是-replace方法(感谢Ohad Schneider的提醒):

Dir *.txt | rename-item -newname { [io.path]::ChangeExtension($_.name, "c") }

对于 Linux(Bash):

for file in *.txt
do
 mv "$file" "${file%.txt}.c"
done

在Bash中,百分号是否像正则表达式中的美元符号一样作为字符串结束的分隔符? - Timo
3
Dir -Recurse 用于递归搜索。 - fartwhif

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