本文目录导读:

#!/bin/bash
#批量删除文件名前的数字编号(如:01_、123- 等)
#功能:移除文件名开头的数字(及紧随其后的分隔符),保留其余部分
#用法:在包含待处理文件的目录中运行此脚本
set -euo pipefail
# 启用 extglob 以便使用更强大的模式匹配
shopt -s extglob
echo "将要处理当前目录下的文件..."
echo "操作:移除文件名开头的数字(及可选的分隔符如 _ - . 空格)"
echo "----------------------------------------"
count=0
# 遍历当前目录下的所有文件(不包含目录)
for file in *; do
# 跳过目录
[ -f "$file" ] || continue
# 使用正则匹配:以数字开头,后面跟 0或多个分隔符,然后其他内容
# 分隔符可以配置:_ - . 空格等
if [[ "$file" =~ ^[0-9]+[_-.[:space:]]*(.*) ]]; then
# 提取捕获组中的剩余文件名部分
new_name="${BASH_REMATCH[1]}"
# 如果新文件名为空(例如文件名为 "123_"),则保留原文件名并提示
if [[ -z "$new_name" ]]; then
echo "⚠ 跳过 '$file'(编号后无内容)"
continue
fi
# 检查目标文件是否已存在
if [[ -e "$new_name" ]]; then
echo "⚠ 跳过 '$file' -> '$new_name'(目标已存在)"
continue
fi
# 执行重命名
if mv -n "$file" "$new_name"; then
echo "✅ 重命名: '$file' -> '$new_name'"
((count++))
else
echo "❌ 重命名失败: '$file'"
fi
fi
done
echo "----------------------------------------"
echo "处理完成,共重命名 $count 个文件。"
使用方法
- 保存脚本:将上面的代码保存为
remove_number_prefix.sh - 赋予执行权限:
chmod +x remove_number_prefix.sh - 运行脚本:在包含待处理文件的目录中执行
./remove_number_prefix.sh
脚本功能详解
- 适用范围:移除文件名开头的数字及紧随其后的常见分隔符(、、、空格等)。
- 安全机制:
- 跳过目录,只处理文件。
- 如果重命名后的文件已存在,则跳过,避免覆盖。
- 如果文件名只有数字和分隔符(如
123_),则跳过并提示。
- 预览模式:如需先查看效果而不真正执行,可以将
mv -n替换为echo "[DRY RUN] mv '$file' '$new_name'"。
处理示例
| 原始文件名 | 重命名后 |
|---|---|
01_报告.doc |
报告.doc |
2024-08-20_照片.jpg |
照片.jpg |
备份.tar |
备份.tar |
001 数据.csv |
数据.csv |
42_README.md |
README.md |
abc.txt |
abc.txt(无变化) |
自定义分隔符
如需调整支持的分隔符,修改脚本中的正则表达式 ^[0-9]+[_-.[:space:]]*(.*) 中的 [_-.[:space:]]* 部分。
- 只移除数字和下划线:
^[0-9]+_(.*) - 移除数字和连字符或点:
^[0-9]+[-.](.*)
提示:建议先在测试目录中运行,确认效果后再用于重要文件。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播