如何在 Linux 中重命名文件和目录

2023-10-29

重命名文件是您经常需要在 Linux 系统上执行的最基本任务之一。您可以使用 GUI 文件管理器或通过命令行终端重命名文件。

重命名单个文件很容易,但一次重命名多个文件可能是一个挑战,特别是对于 Linux 新手来说。

在本教程中,我们将向您展示如何使用mv and rename重命名文件和目录的命令。

重命名文件mv命令#

The MV命令(缺少移动)用于重命名文件或将文件从一个位置移动到另一个位置。语法为mv命令如下:

mv [OPTIONS] source destination

The source可以是一个或多个文件或目录destination可以是单个文件或目录。

  • 如果您将多个文件指定为source, the destination必须是一个目录。在这种情况下,source文件被移动到目标目录。
  • 如果您将单个文件指定为source,以及destinationtarget 是现有目录,则将文件移动到指定目录。
  • 要重命名文件,您需要指定单个文件作为source和单个文件作为destination target.

例如,重命名文件file1.txt as file2.txt你会运行:

mv file1.txt file2.txt

使用以下命令重命名多个文件mv命令#

The mv命令一次只能重命名一个文件,但可以与其他命令结合使用,例如find或在 bash 内for or while循环重命名多个文件。

以下示例展示了如何使用 Bash for 循环重命名所有.html通过更改当前目录中的文件.html延伸至.php.

for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done

我们逐行分析一下代码:

  • 第一行创建一个for循环并迭代所有文件的列表.html.
  • 第二行适用于列表中的每一项,并将文件移动到新的文件中替换.html with .php。那个部分${file%.html}正在使用shell参数扩展删除.html文件名的一部分。
  • done表示循环段的结束。

这是一个使用的示例mv结合find达到与上面相同的效果:

find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;

The find命令正在传递以以下结尾的所有文件.html在当前目录下到mv一项一项地使用-exec选项。字符串{}是当前正在处理的文件的名称。

正如您从上面的示例中看到的,使用以下命令重命名多个文件mv命令不是一件容易的事,因为它需要对 Bash 脚本有很好的了解。

重命名文件rename命令#

The rename命令用于重命名多个文件。该命令比mv因为它需要一些正则表达式的基础知识。

有两个版本rename具有不同语法的命令。在本教程中,我们将使用 Perl 版本rename命令。如果您的系统上没有安装此版本,您可以使用发行版的包管理器轻松安装它。

  • Install rename在 Ubuntu 和 Debian 上

    sudo apt install rename
  • Install rename在 CentOS 和 Fedora 上

    sudo yum install prename
  • Install rename在 Arch Linux 上

    yay perl-rename ## or yaourt -S perl-rename

语法为rename命令如下:

rename [OPTIONS] perlexpr files

The rename命令将重命名files根据指定的perlexpr正则表达式。您可以阅读有关 perl 正则表达式的更多信息here .

以下示例将更改所有具有扩展名的文件.html to .php:

rename 's/.html/.php/' \*.html

您可以使用-n选项可以打印要重命名的文件的名称,而不重命名它们。

rename -n 's/.html/.php/' \*.html

输出将如下所示:

rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)

默认情况下,rename命令不会覆盖现有文件。通过-f允许覆盖现有文件的选项:

rename -f 's/.html/.php/' \*.html

下面是一些更常见的示例,说明如何使用rename命令:

  • 将文件名中的空格替换为下划线

    rename 'y/ /\_/' \*
  • 将文件名转换为小写

    rename 'y/A-Z/a-z/' \*
  • 将文件名转换为大写

    rename 'y/a-z/A-Z/' \*

结论#

我们已经向您展示了如何使用mv and rename重命名文件的命令。

Linux 中还有其他重命名文件的命令,例如mmv。被命令行吓倒的 Linux 新用户可以使用 GUI 批量重命名工具,例如变态 .

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 中重命名文件和目录 的相关文章

  • VSCode 上的 Pipenv:为什么终端上不显示 (pipenv)?

    我正在 VSCode Bash 终端上设置 pipelinev 虚拟环境 但它没有显示 pipenv 这使得它非常混乱 当我使用Pycharm并让它配置pipenv环境时 它会自动显示 pipenv 在项目路径之后 所以很容易判断我是否在
  • 如何在Python中获取Linux控制台窗口宽度

    python 有没有办法以编程方式确定控制台的宽度 我的意思是一行中不换行的字符数 而不是窗口的像素宽度 Edit 寻找适用于 Linux 的解决方案 不确定为什么它在模块中shutil 但它在 Python 3 3 中出现了 看 查询输出
  • 断开连接后保持 SSH 会话运行 - 过夜 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是对此的后续问题question https stackoverflow com questions 33041892 keep ssh
  • Mac 终端 - 打开终端时出现“释放的指针未分配”错误

    在 mac 上打开终端时收到以下消息 上次登录 3 月 11 日星期二 14 33 24 在控制台上 登录 291 0x7fff78af9310 malloc 对象 0x7f974be006f0 的错误 正在释放的指针未分配 在malloc
  • 运行不带“python”关键字的 python 脚本

    如何在 Mac 上的终端中运行 python 脚本而不使用 python 关键字 而无需编辑现有的 python 文件 现在我必须这样做 python script py 我喜欢做的是这样的 script py 添加一个shebang us
  • linux终端动画-延迟打印“帧”的最佳方法(C语言)

    我正在为终端开发一个简单的 pong 克隆 并且需要一种方法来延迟 帧 的打印 我有一个二维数组 screen ROWS COLUMNS 以及打印屏幕的函数 void printScreen int i 0 int j while i lt
  • 在终端中访问文件“添加日期”

    在我的 Mac 上的下载文件夹中 文件有一个 添加日期 列 我正在尝试创建一个脚本来将超过 x 天的文件移至我的垃圾文件夹 以下方法有效 但它是根据创建 修改日期提取文件 而不是我从 Finder 中看到的 添加日期 有没有办法显示 使用这
  • 更改 django 应用程序名称时迁移历史记录不一致

    我正在尝试重命名 django 网站中的应用程序之一 还有另一个应用程序依赖于它及其 mysql 表 我检查了两个应用程序中的所有文件 并将旧名称的实例更改为新名称 但是 现在我在尝试执行迁移时遇到此错误消息 File Users Limo
  • Bash:在新终端中执行带有参数的命令[重复]

    这个问题在这里已经有答案了 所以我想在 bash 中打开一个新终端并执行带参数的命令 只要我只采取类似的东西ls作为命令它工作正常 但是当我采取类似的东西时route n 所以带参数的命令不起作用 代码 gnome terminal win
  • 计算Mac中目录及其子目录的特定文件类型的数量

    I use ls l filetype wc l但它只能查找当前目录中的文件 我怎样才能计算子目录中具有特定扩展名的所有文件 非常感谢 你可以这样做find命令 find name filetype wc l
  • python virtualenv和flask安装。没有名为flask的模块

    运行基本程序时我不断收到此错误 ImportError No module named flask 这是基本的程序 from flask import Flask app Flask name app route def hello wor
  • git 奇怪的彩色终端响应[重复]

    这个问题在这里已经有答案了 最近我被下面的彩色终端响应吓死了 它是由 git push 命令触发的 Does anybody have a clue where this colored response comes from 只是猜测 但
  • Mac 10.8.3 上的 fltk 安装

    我正在挣扎fltk在我的 Mac 上安装 我想在Xcode 4 下载文件并解压缩后 尝试按照说明操作 2 3 Configuring FLTK Stay in your FLTK source code directory Type aut
  • 如何清除整个终端(PowerShell)

    我有一个问题 在powershell中使用clear或cls命令仅清除终端的可见部分 我想知道如何清除整个终端 顺便说一句 我使用 VSCode tl dr 问题是关于清零的both屏幕和回滚缓冲区 in the 综合终端 of 视觉工作室
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • 从 pod 安装库时出现错误

    我收到未定义的方法squish for
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 如何在 Mac 上设置默认 shell,例如钓鱼? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不喜欢重新输入fish每次我启动终端时 我想Fish https en wikipedia org wiki Fish Unix she
  • 如何在 Visual Studio Code 中从集成终端引用当前文件

    我想知道是否可以 使用内置变量 直接使用集成终端在 Visual Studio 中打开的当前文件 例如 gt some command current file Where current file would be a built in

随机推荐

  • 时序预测

    时序预测 MATLAB实现2 DCNN卷积神经网络时间序列预测 目录 时序预测 MATLAB实现2 DCNN卷积神经网络时间序列预测 预测效果 基本介绍 研究背景 模型结构 建模流程 程序设计 学习总结 参考资料 预测效果 基本介绍 一种基
  • Dolby与DTS杜比环绕与DTS环绕音响

    转自 http blog sina com cn s blog a15db8ae0101dlz7 html 杜比环绕与DTS环绕具有的相近之处在于它们都是属于有损的数字压缩技术 这种称为 感性的 数据压缩技术是基于人类心理声学上所具备的听音
  • AndroidStudio运行程序时启动虚拟机出现x86 emulation currently requires hardware acceleration!问题解决方法

    这个问题是没有安装intelhaxm android exe这个软件 找到 SDK安装目录 一般在C盘下C Users admini AppData Local Android Sdk extras intel Hardware Accel
  • C++:采用vector实现二分查找及其变种总结

    主要分为六种情况 闭区间 半开区间 中位值在循环之外的半开区间二分查找首个序列 中位值在循环之外的半开区间二分查找末尾序列 以及中位值在循环之外的完全开区间二分查找首个序列和中位值在循环之外的完全开区间二分查找末尾序列 include
  • 微信小游戏开发之四:使用three.js引擎

    一 前言 微信小游戏中最魔性的 跳一跳 就是基于three js 引擎开发的 看这里 不要再让我发邮箱了 源码放到github上了 GitHub地址 请自行下载 二 下载 three min js 打开页面 复制代码到本地 三 引用 使用如
  • Qt之输入对话框(QInputDialog)的相关参数(Qt::InputMethodHints)和(QLineEdit::EchoMode)学习

    本文参考文章 Qt 编程 输入对话框 QInputDialog 的使用 学习笔记 前言 QInputDialog类提供了一个简单的便捷对话框 可以从用户那里获取用户录入的单个值 当前Qt提供了五个静态接口函数用于获取常用的数据类型参数 单文
  • 【华为OD机试真题2023 JS】上班之路

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 上班之路 知识点BFS搜索广搜 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 Jungle生活在美丽的蓝鲸城 大马路都是方方正正 但是每天马路的封闭情况都不一样
  • 在 Bash 中获取明天的日期:实用演练

    在系统管理和 shell 脚本世界中 操作日期和时间的能力至关重要 无论是用于计划任务 日志轮换还是简单地为文件添加时间戳 了解如何在脚本中使用日期都可以节省大量时间和精力 Bash Bourne Again Shell 为此提供了一组强大
  • 使用 PHP 和 Docker 设置开发环境

    本地开发环境对于 PHP 开发人员测试和调试应用程序至关重要 传统上 开发人员会依赖 XAMPP MAMP 或 WAMP 等工具 它们为本地开发提供成熟的 LAMP 堆栈 Linux Apache MySQL PHP 然而 随着应用程序变得
  • 如何使用 Iptables 在 Linux 中阻止 IP 地址

    Iptables 是 Linux 操作系统中内置的强大且灵活的防火墙工具 它用于建立 管理和配置IP数据包过滤规则表 Iptables 的常见用途之一是阻止或限制来自特定 IP 地址或 IP 地址范围的访问 本文提供了有关如何使用 Ipta
  • 如何在 Python 中创建和读取列表

    Python 是一种流行的编程语言 具有广泛的应用范围 包括数据科学 Web 开发和自动化 Python 中最基本 最重要的数据结构之一是列表 列表是值或项目的集合 可以是任何数据类型 包括字符串 整数 浮点数 甚至其他列表 在本文中 我们
  • 如何在 MacOS 上安装 Golang

    Go 是 Google 于 2009 年开发的一种编译型编程语言 由于其性能 可读性和简单性 它在软件开发行业中广受欢迎 Go 是一种通用编程语言 它的代码片段感觉很自然 与 C 或 Java 等其他语言相比 它可以用更少的代码行编写 Go
  • 什么是 Apache Prefork、Worker 和 Event MPM(多处理模块)

    Apache 是最流行的 Linux Web 服务器 大多数Linux系统管理员的学习阶段都是从Apache httpd Web服务器开始的 甚至我在学习过程中也使用过Apache Web服务器 在初始级别 系统管理员使用 Apache 他
  • 如何在 Debian 8 上安装 Ansible (Jessie)

    Ansible 是一种自动化工具 用于从单台计算机管理多个远程主机 它为您提供了针对大量远程主机的轻松配置 例如 您在多台机器上执行相同的任务 Ansible 为您提供了自动执行这些任务的选项 本教程将帮助您在 Debian 8 Jessi
  • Ubuntu 和 Debian Linux 中的 12 个 Apt 命令示例

    apt 命令是 Linux 操作系统中最强大 最通用的工具之一 它为用户提供了一个功能强大且易于使用的包管理系统 可用于轻松管理和安装软件 使用 apt 命令 用户可以快速轻松地从系统中搜索 安装 升级和卸载软件应用程序 本指南详细概述了
  • Linux 中的排序命令及实例

    The sort Linux 中的命令是 GNU Coreutils 包的一部分 此命令用于按升序 降序对指定文件或标准输入中的文本行进行排序 排序后的输出可以写入文件或显示在标准输出上 这 sort 命令是一个简单而强大的工具 可用于各种
  • 使用.nvmrc指定节点版本

    您可以使用特定的 Node js 版本锁定您的应用程序 这将帮助您隔离 Node js 应用程序的依赖关系 因此您可以在任何系统上快速安装所需的软件包 在本教程中 您将学习使用 nvmrc 文件指定 node js 版本的简单过程 使用 n
  • 如何在 Apache 中启用过期标头

    Apache 是一种高度灵活 功能强大且开源的 HTTP 服务器软件 广泛用于托管网站 它的功能之一是操作响应中的 HTTP 标头 该功能可以显着提高网站的性能 在这些操作中 启用 过期标头 是管理网站缓存行为的有效技术 本质上 过期标头告
  • 如何在 Ubuntu 20.04 上安装 Zoom

    Zoom 应用程序是当今最流行的应用程序之一 Zoom 云会议应用程序通过互联网上的实时消息传递和内容共享提供简化的视频会议 Zoom 客户端允许您无需登录应用程序即可加入会议 要开始新会议 您需要登录该应用程序 访问zoom us创建帐户
  • 如何在 Linux 中重命名文件和目录

    重命名文件是您经常需要在 Linux 系统上执行的最基本任务之一 您可以使用 GUI 文件管理器或通过命令行终端重命名文件 重命名单个文件很容易 但一次重命名多个文件可能是一个挑战 特别是对于 Linux 新手来说 在本教程中 我们将向您展