Linux系统如何按规则批量重命名缺失点号前缀的pdf类文件
批量重命名缺失点分隔符的pdf文件方案
核心处理逻辑:仅匹配文件名由纯数字开头、直接拼接pdf字段(可附带.meta后缀)的文件,在pdf字段前补.分隔符;已经是规范命名的.pdf、.pdf.meta文件不会被改动。
Windows 平台(PowerShell 操作)
- 打开存放目标文件的文件夹,在顶部地址栏输入
powershell后按回车,会直接在当前目录唤起终端。 - 先执行预览命令,核对待修改文件和预期重命名结果,避免误操作:
Get-ChildItem -File | Where-Object { $_.Name -match '^(\d+)pdf(\.meta)?$' } | Select-Object Name, @{n='预期新文件名';e={$_.Name -replace '^(\d+)pdf(\.meta)?$','$1.pdf$2'}}
- 确认预览结果完全符合要求后,执行正式重命名命令:
Get-ChildItem -File | Where-Object { $_.Name -match '^(\d+)pdf(\.meta)?$' } | Rename-Item -NewName { $_.Name -replace '^(\d+)pdf(\.meta)?$','$1.pdf$2' }
正则规则说明:
^(\d+)pdf(\.meta)?$只会精准匹配「纯数字段+直接接pdf+可选.meta后缀」格式的文件名,已经存在.的问题。
macOS / Linux 平台(Bash 操作)
- 打开终端,执行
cd 目标文件所在目录路径进入待处理文件的存放文件夹。 - 先执行预览命令,打印所有待修改文件的新旧文件名对照:
for f in *pdf*; do if [[ $f =~ ^([0-9]+)pdf(\.meta)?$ ]]; then echo "$f -> ${BASH_REMATCH[1]}.pdf${BASH_REMATCH[2]}" fi done
- 核对输出的对照列表无误后,执行正式重命名命令:
for f in *pdf*; do if [[ $f =~ ^([0-9]+)pdf(\.meta)?$ ]]; then mv -- "$f" "${BASH_REMATCH[1]}.pdf${BASH_REMATCH[2]}" fi done
结果校验
执行命令后,对应给出的文件列表,改动结果如下:
3423436pdf→3423436.pdf45435435pdf→45435435.pdf3434311pdf.meta→3434311.pdf.meta12121234pdf.meta→12121234.pdf.meta- 其余原本命名合规的
.pdf、.pdf.meta文件保持原样,不会被修改。
操作提示:执行重命名前可以先把整个文件夹的文件备份一次,避免命令输入错误导致文件名混乱。
内容的提问来源于stack exchange,提问作者Sammy Merk
相关产品推荐
相关产品推荐

