linux-batch-delete
Linux 批量删除编号文件
补充说明
用于批量删除带有编号的文件(如 pc-1.jpg、pc-2.log 等),通过 Shell 循环结合通配符实现精准或范围删除。适用于日志清理、测试数据清理、批量归并后的源文件清理等场景。
语法
for i in {start..end}; do rm 前缀-$i.后缀 [2>/dev/null]; done
选项
2>/dev/null 屏蔽错误输出(文件不存在时不显示报错)
参数
{start..end} 数字范围,如 {1..100} 表示 1 到 100
前缀-$i.后缀 文件名模板,如 pc-$i.* 匹配 pc-1.jpg、pc-1.log 等
用法示例
1. 删除大于 100 的编号文件
for i in {101..9999}; do rm pc-$i.* 2>/dev/null; done
删除 pc-101.* 到 pc-9999.* 所有后缀的文件,跳过不存在的文件。
2. 删除小于 100 的编号文件
for i in {1..99}; do rm pc-$i.* 2>/dev/null; done
删除 pc-1.* 到 pc-99.* 所有后缀的文件。
3. 不屏蔽错误(查看哪些文件缺失)
for i in {101..9999}; do rm pc-$i.*; done
删除 pc-101.* 到 pc-9999.*,缺失文件会显示错误信息,便于排查。
4. 仅删除指定后缀文件
for i in {101..9999}; do rm pc-$i.log 2>/dev/null; done
只删除 pc-101.log 到 pc-9999.log,保留同名其他后缀文件。
5. 逆序删除
for i in {1000..1}; do rm pc-$i.* 2>/dev/null; done
从大到小删除,避免删除过程中新生成的文件被重新编号。
6. 删除前预览
for i in {1..100}; do ls pc-$i.* 2>/dev/null; done
先用 ls 替换 rm 预览匹配的文件列表,确认无误后再执行删除。
安全提示
- 仅删除当前目录文件,不递归子目录;
- 执行前先用
ls pc-*.xxx预览文件,确认范围; - 删除后文件无法恢复,生产环境请谨慎执行;
- 建议先在小范围(如
{1..5})测试,确认模式正确后再全量执行; - 文件名中的编号必须连续,否则缺失的文件号会报错(可用
2>/dev/null屏蔽)。