linux下面对文件进行001-100重命名

本文介绍了一种在终端中批量修改文件名的方法,通过使用for循环和printf命令,可以将一系列文件名统一格式化,例如从'1-5'更改为'00001-00005'。这一技巧对于处理大量文件命名规范化的场景非常实用。

分为两个步骤

1.

https://blog.youkuaiyun.com/zhangjunhit/article/details/80569097 将文件名改为1-5

2.将1-5改为00001-00005

在终端(文件所在文件夹同级位置)输入

for name in ./lr_res/*; do    echo "$name";   new=`printf "%05d\n" $i`;   echo $new;   cp $name ./new/$new.jpg;   let i=i+1; done

./lr_res/*  是原始文件所在位置

./new/ 是改完名称后文件所在位置

Linux 系统中,**对文件重命名**是一个基础且常用的操作。主要通过 `mv`(move)命令实现文件重命名和移动操作。下面详细介绍在 Shell 脚本和命令行中如何对文件进行重命名,并提供示例代码和注意事项。 --- ## ✅ 使用 `mv` 命令重命名文件(推荐方法) ### 基本语法: ```bash mv [原文件名] [新文件名] ``` ### 示例: ```bash mv oldname.txt newname.txt ``` ### ✅ 示例脚本: ```bash #!/bin/bash OLD_FILE="report.txt" NEW_FILE="final_report.txt" if [ -f "$OLD_FILE" ]; then mv "$OLD_FILE" "$NEW_FILE" echo "文件重命名为 $NEW_FILE" else echo "文件 $OLD_FILE 不存在" fi ``` ### 🔍 原理解析: - `mv` 命令不仅可以重命名文件,还可以移动文件- 如果目标文件名已存在,`mv` 会将源文件移动到目标目录下(而不是覆盖); - 如果目标文件是已存在的**普通文件**,`mv` 会提示是否覆盖(取决于是否带 `-i` 参数); - 在脚本中建议使用 `-i` 或 `-f` 控制行为。 --- ## ✅ 选项说明(常用参数) | 参数 | 含义 | |------|------| | `-i` | 交互式:如果目标文件存在,提示是否覆盖 | | `-f` | 强制覆盖,不提示 | | `-v` | 显示详细操作信息 | ### 示例: ```bash mv -i old.txt new.txt # 如果 new.txt 存在,提示是否覆盖 mv -f old.txt new.txt # 强制覆盖,不提示 mv -v old.txt new.txt # 显示重命名过程 ``` --- ## ✅ 批量重命名多个文件 可以使用 `for` 循环结合 `mv` 实现批量重命名。 ### 示例:将所有 `.log` 文件改为 `.txt` 后缀 ```bash for file in *.log; do mv "$file" "${file%.log}.txt" done ``` ### 🔍 解释: - `${file%.log}` 表示删除文件名最后的 `.log` 部分; - `"${file%.log}.txt"` 表示将 `.log` 替换为 `.txt`; - 这种方式适用于简单的批量重命名任务。 --- ## ✅ 使用 `rename` 命令批量重命名(更强大) `rename` 是一个专门用于批量重命名的命令,支持正则表达式。 ### 安装(某些发行版默认未安装): ```bash sudo apt install rename # Debian/Ubuntu sudo dnf install prename # Fedora ``` ### 示例 1:将所有 `.log` 文件改为 `.txt` ```bash rename 's/\.log$/.txt/' *.log ``` ### 示例 2:将文件名中的 `old` 替换为 `new` ```bash rename 's/old/new/' *.txt ``` ### 示例 3:添加前缀 `backup_` ```bash rename 's/^/backup_/' *.log ``` --- ## ✅ 注意事项 | 事项 | 说明 | |------|------| | 文件权限 | 重命名不会改变文件权限和所有者 | | 文件被占用 | 即使文件被其他进程打开,也可以安全重命名 | | 跨文件系统 | `mv` 可以跨文件系统,但本质是复制 + 删除 | | 目录重命名 | `mv` 也可以用于重命名目录 | | 脚本中使用 | 建议加判断 `[ -f file ]` 避免错误 | | 覆盖风险 | 使用 `-i` 避免误覆盖,或使用 `-n` 测试 | --- ## ✅ 完整示例脚本(带判断和日志) ```bash #!/bin/bash OLD_NAME="data.csv" NEW_NAME="backup_data.csv" if [ -f "$OLD_NAME" ]; then if [ -f "$NEW_NAME" ]; then echo "目标文件 $NEW_NAME 已存在,是否覆盖?(y/n)" read -r answer if [ "$answer" = "y" ]; then mv -f "$OLD_NAME" "$NEW_NAME" echo "文件已覆盖为 $NEW_NAME" else echo "操作取消" fi else mv "$OLD_NAME" "$NEW_NAME" echo "文件重命名为 $NEW_NAME" fi else echo "原文件 $OLD_NAME 不存在" fi ``` --- ## ✅ 小结 | 方法 | 命令 | 适用场景 | |------|------|----------| | 单个文件重命名 | `mv old new` | 常规重命名 | | 批量重命名 | `for` 循环 + `mv` | 简单批量操作 | | 正则批量重命名 | `rename` | 高级批量操作 | | 添加前缀/后缀 | `rename` 或 `mv` | 文件整理 | | 跨文件系统 | `mv` | 文件迁移 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值