银河麒麟系统中批量修改文件扩展名需用终端命令:for循环适合新手,rename支持正则精准替换,find配合-exec可递归处理子目录;三者均需注意空格、通配符和文件类型校验。

在银河麒麟系统中批量修改一批文件的扩展名,比如把所有 .log 改成 .txt 或把 .jpg 统一转为 .png,必须通过终端命令实现——图形界面不支持按后缀精确筛选和替换,盲目操作容易改错文件名主体或漏掉空格文件。
用 for 循环安全替换(推荐新手)
这一步操作起来很简单,直接在终端里敲几行命令就能完成,且兼容所有麒麟版本,无需额外安装软件。
第一步:按 Ctrl + Alt + E 打开终端,输入 cd /path/to/your/folder 切换到目标文件夹。路径必须准确,否则命令会在错误目录下执行,【找不到匹配文件时,通配符 *.log 会原样传入循环,导致尝试重命名一个叫“*.log”的不存在文件】。
第二步:运行替换命令,例如把所有 .log 改为 .txt:for i in *.log; do mv "$i" "${i%.log}.txt"; done。双引号 "$i" 不可省略,否则含空格的文件名(如“系统 日志.log”)会报错 “No such file or directory”。
第三步:执行 ls -1 *.txt 查看结果。如果列表为空,不是命令写错了,就是当前目录下根本没有 .log 文件——请用 ls -1 *.log 先确认原始文件是否存在。
用 rename 命令精准替换(适合进阶用户)
rename 是专为批量重命名设计的工具,支持正则表达式,能严格限定只改结尾的后缀,不碰文件名里的其他点号(比如不会把 file.old.txt 中的 .old 错误替换成 .new)。
方法一:先预览再执行(强烈建议)
运行 rename -n 's/\.log$/.bak/' *.log,它只显示将要发生的更改,不真正执行。看到输出类似 file.log -> file.bak 就说明规则正确。
方法二:确认无误后执行真实替换
把上面命令中的 -n 删除,变成 rename 's/\.log$/.bak/' *.log。注意单引号必须保留,否则 shell 会提前解析 $ 符号,导致正则失效。
⚠️ 银河麒麟 V10 默认安装的是 Perl 版 rename,但部分精简版可能未预装。若提示 command not found,先运行 sudo apt install rename 安装。
跨子目录递归修改(需处理多层文件夹)
当目标文件分散在当前目录及其所有子文件夹中时,不能只靠 for 或裸 rename,必须用 find 深度扫描并逐个调用重命名逻辑。
① 进入顶层目录:cd /top/folder。
② 执行递归替换:find . -type f -name "*.log" -exec bash -c 'mv "$1" "${1%.log}.txt"' _ {} \;。
③ 验证结果:find . -name "*.txt" | head -10 查看前10个新文件路径,确认是否全部落入预期位置。
这条命令里 -type f 确保只匹配普通文件,跳过目录;-exec ... \; 保证每个文件单独启动一次 bash,避免空格或换行符引发截断。如果漏掉 -type f,遇到同名目录就会报错。

















