You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过终端Shell/脚本自动将文件重命名为含电脑序列号的格式

如何通过终端Shell/脚本自动将文件重命名为含电脑序列号的格式

当然可以实现!我来帮你一步步拆解怎么用单行命令或者脚本完成这个需求,刚好你已经知道怎么获取序列号了,接下来就是把这个值和文件名结合起来就行。

一、单行命令快速实现

针对你给出的具体文件路径,直接用这行命令就行:

SERIAL=$(sudo dmidecode -s system-serial-number) && mv /home/ladmin/Documents/ExampleFile123.txt "/home/ladmin/Documents/PCSerial_${SERIAL}_Example123.txt"

我给你解释下每个部分:

  • SERIAL=$(sudo dmidecode -s system-serial-number):把获取到的序列号存到名为SERIAL的变量里,这样后面方便调用
  • &&:只有前面获取序列号的命令成功执行了,才会执行后面的重命名操作
  • 双引号包裹新文件名:防止序列号里有空格、特殊字符(比如&、*)导致命令出错

如果你的需求是直接把文件名改成序列号(比如ABC123.txt),可以改成:

SERIAL=$(sudo dmidecode -s system-serial-number) && mv /home/ladmin/Documents/ExampleFile123.txt "/home/ladmin/Documents/${SERIAL}.txt"

二、通用脚本(适合批量或重复使用)

如果需要经常做这个操作,或者想处理不同的文件,可以写一个简单的脚本,灵活性更高:

  1. 先创建一个脚本文件,比如rename_with_serial.sh,内容如下:
#!/bin/bash

# 检查用户是否提供了文件路径
if [ $# -ne 1 ]; then
    echo "用法: $0 <需要重命名的文件路径>"
    exit 1
fi

# 拆分文件的路径、名称和扩展名
FILE_PATH="$1"
FILE_DIR=$(dirname "$FILE_PATH")
FILE_FULL_NAME=$(basename "$FILE_PATH")
FILE_EXT="${FILE_FULL_NAME##*.}"
FILE_NAME="${FILE_FULL_NAME%.*}"

# 获取电脑序列号
SERIAL=$(sudo dmidecode -s system-serial-number)
if [ -z "$SERIAL" ]; then
    echo "哎呀,无法获取电脑序列号!请检查是否有sudo权限,或者你的设备是否支持通过dmidecode读取序列号"
    exit 1
fi

# 生成新的文件名(这里用的是你例子里的前缀+序列号+原文件名格式,你可以按需修改)
NEW_FILE_NAME="PCSerial_${SERIAL}_${FILE_NAME}.${FILE_EXT}"
NEW_FILE_PATH="${FILE_DIR}/${NEW_FILE_NAME}"

# 执行重命名
mv "$FILE_PATH" "$NEW_FILE_PATH"
echo "搞定!文件已经重命名为: $NEW_FILE_PATH"
  1. 给脚本添加执行权限:
chmod +x rename_with_serial.sh
  1. 运行脚本(替换成你的文件路径):
./rename_with_serial.sh /home/ladmin/Documents/ExampleFile123.txt

注意事项

  • 执行命令时会要求输入sudo密码,这是正常的,因为dmidecode需要管理员权限才能读取硬件信息
  • 部分设备(比如某些虚拟机、老款笔记本)可能无法通过dmidecode获取序列号,这时候脚本会提示错误
  • 如果序列号包含特殊字符,一定要用双引号包裹文件名变量,避免命令执行失败

备注:内容来源于stack exchange,提问作者user1737015

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:34:37