当前位置: 首页 > news >正文

Linux基本指令篇 —— mv指令

    在Windows中我们经常使用Ctrl+X和Ctrl+V将一个地方的文件或目录移动到另一个地方,我们若是要在Linux当中完成此操作,则需要使用mv指令。mv 是 Linux 系统中用于移动或重命名文件和目录的基本命令之一,是 "move" 的缩写。下面将详细介绍这个命令的用法、选项和实际应用场景。

目录

一、基本语法

二、主要功能

三、常用选项

四、使用示例

1. 重命名文件

2. 移动文件到目录

3. 移动并重命名文件

4. 移动多个文件

5. 移动目录

6. 交互模式(覆盖前询问)

7. 强制移动(不询问)

8. 显示详细操作

9. 不覆盖已存在文件

10. 创建备份

五、注意事项

基础环境准备

示例1:默认移动行为(移动链接本身)

示例2:使用 -L 移动目标文件

六、实际应用技巧

批量重命名:结合通配符使用

备份重要文件

使用绝对路径避免意外

与find结合使用


一、基本语法

mv [选项] 源文件或目录 目标文件或目录

二、主要功能

  1. mv命令会根据第二个参数的类型(文件或目录)决定操作方式:重命名文件或将文件移动到指定目录。
  2. 若第二个参数为文件名,mv将执行重命名操作。此时只能指定一个源文件(或目录),将其名称更改为目标文件名。
  3. 若第二个参数为目录名,则可指定多个源文件(或目录),mv会将它们全部移动到目标目录中。

三、常用选项

选项描述
-i交互模式,覆盖前询问确认
-f强制覆盖,不提示
-n不覆盖已存在文件
-u只在源文件比目标文件新或目标文件不存在时才移动
-v显示详细操作信息
-b覆盖前为目标文件创建备份
--backup类似 -b 但可以控制备份方式
-S指定备份文件的后缀

四、使用示例

1. 重命名文件

mv oldfile.txt newfile.txt

将文件 oldfile.txt 重命名为 newfile.txt:

2. 移动文件到目录

mv newfile.txt ~/path/to/directory/

将 newfile.txt移动到 ~/path/to/directory/ 目录下:

3. 移动并重命名文件

mv file.txt ~/path/to/directory/newfilename.txt

file.txt 移动到指定目录并重命名为 newfilename.txt:

4. 移动多个文件

mv file1.txt file2.txt file3.txt ~/target/directory/

将多个文件移动到目标目录:

5. 移动目录

mv dir1 dir2

如果 dir2 不存在,则将 dir1 重命名为 dir2:

如果 dir2 存在,则将 dir1 移动到 dir2 中:

6. 交互模式(覆盖前询问)

mv -i file.txt existingfile.txt

如果 existingfile.txt 已存在,会询问是否覆盖:

        但是我们思考一下,这个existingfile.txt文件是原来的那个文件吗?我们来cat一下,可以发现,并不是原来的那个文件,原来的existingfile.txt已经被覆盖,而原来的file.txt重命名成为新的existingfile.txt,内容不变,即证明结论: 

7. 强制移动(不询问)

mv -f file.txt existingfile.txt

强制覆盖已存在的文件,不提示。

8. 显示详细操作

mv -v *.txt ~/path/to/

显示移动的每个文件的详细信息:

9. 不覆盖已存在文件

mv -n file.txt existingfile.txt

如果 existingfile.txt 已存在,则不执行移动操作。

10. 创建备份

mv -b file.txt existingfile.txt

覆盖 existingfile.txt 前会创建备份文件 existingfile.txt~


五、注意事项

  1. 权限问题:需要有源文件的读取权限和目标位置的写入权限

  2. 跨文件系统移动:如果源和目标在不同文件系统上,mv 实际上是复制+删除操作

  3. 危险操作mv 会静默覆盖文件,使用 -i 选项或设置别名可以增加安全性

  4. 符号链接:移动符号链接时,默认移动的是链接本身而非目标文件(使用 -L 可以改变此行为),下面将解释:

我们使用具体例子展示移动符号链接时的不同行为,特别是默认行为与使用 -L 选项的区别:

基础环境准备

首先创建测试文件和链接:

# 创建测试目录和文件
mkdir -p test_dir/original_files
echo "这是原始文件内容" > test_dir/original_files/source_file.txt# 创建符号链接
ln -s original_files/source_file.txt test_dir/symlink_to_source.txt# 查看结构
tree test_dir

输出结果:

示例1:默认移动行为(移动链接本身)

结果说明

  • target/ 目录中将包含符号链接 symlink_to_source.txt

  • 该链接仍然指向 original_files/source_file.txt

  • 原始文件位置不变

示例2:使用 -L 移动目标文件

结果说明

  • target/ 目录中将包含实际的 source_file.txt 文件

  • original_files/ 目录中的原始文件将消失

  • 符号链接本身将被移除(因为它指向的文件已被移动)


六、实际应用技巧

  1. 批量重命名:结合通配符使用

    for file in *.txt; domv "$file" "${file%.txt}.c"
    done

    解释:

            ${file%.txt} 表示去掉变量 $file 末尾的 .txt,然后追加新的扩展名 .c,适用于所有 Linux/Unix 系统。

  2. 备份重要文件

    mv important.txt{,.bak}

    这会将 important.txt 重命名为 important.txt.bak:

  3. 使用绝对路径避免意外

    mv /full/path/to/source /full/path/to/destination

  4. 与find结合使用

    find . -name "*.tmp" -exec mv {} ~/path \;

移动所有临时文件到/path目录: 

  • find . - 从当前目录开始搜索

  • -name "*.tmp" - 查找所有以 .tmp 结尾的文件

  • -exec mv {} ~/path \; - 对每个找到的文件执行 mv 命令

    • {} - 被替换为当前找到的文件名

    • ~/path - 目标目录

    • \; - 表示 -exec 命令结束

移动前的情况: 

移动后的情况:

http://www.lqws.cn/news/524179.html

相关文章:

  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • 以太坊执行客户端和共识客户端各自的作用及意义
  • java 对接ETH(以太坊) 交易相关资料
  • 区间求最值问题高效解决方法
  • Linux下使用docker nginx部署vue前端项目工程
  • vue2 使用el-form中el-form-item单独绑定rules不生效问题
  • IoT/HCIP实验-5/基于NB-IoT的智慧农业实验(平台侧开发+端侧编码+基础调试分析)
  • LOOP如何让长周期交互LLM代理在复杂环境中实现突破?
  • 正则表达式匹配实现
  • Boosting:从理论到实践——集成学习中的偏差征服者
  • Prompt:面向目标的提示词
  • WeakAuras Lua Script [ICC BOSS 12 - The Lich King]
  • Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
  • 自动驾驶数据特征提取实战:用Python打开智能驾驶的新视角
  • 深入理解残差网络(ResNet):原理与PyTorch实现
  • Mysql数据库操作大全万字详解
  • 【Redis】Redis的下载安装和配置
  • 检查StringBuilder是否包含字符串
  • ARM内核之CMSIS
  • 【机器学习】非参数贝叶斯回归方法 GPR
  • ipfs在windows下载和安装
  • JSON框架转化isSuccess()为sucess字段
  • C++(智能指针)
  • Liunx操作系统笔记2
  • linux-修改文件命令(补充)
  • IT运维效率提升: 当IT监控遇上3D可视化
  • 三步实现B站缓存视频转MP4格式
  • 记一次AWS 中RDS优化费用使用的案例
  • Postman鉴权动态传参?对比脚本变量vs环境变量!
  • 理论加案例,一文读懂数据分析中的分类建模