随机
Enter 搜索 ↑↓ 切换 Esc 清空

linux-batch-delete

命令

Linux 批量删除编号文件

linux-batch-delete

Linux 批量删除编号文件

补充说明

用于批量删除带有编号的文件(如 pc-1.jpgpc-2.log 等),通过 Shell 循环结合通配符实现精准或范围删除。适用于日志清理、测试数据清理、批量归并后的源文件清理等场景。

语法

for i in {start..end}; do rm 前缀-$i.后缀 [2>/dev/null]; done

选项

2>/dev/null    屏蔽错误输出(文件不存在时不显示报错)

参数

{start..end}   数字范围,如 {1..100} 表示 1100
前缀-$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.logpc-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 预览匹配的文件列表,确认无误后再执行删除。

安全提示

  1. 仅删除当前目录文件,不递归子目录;
  2. 执行前先用 ls pc-*.xxx 预览文件,确认范围;
  3. 删除后文件无法恢复,生产环境请谨慎执行;
  4. 建议先在小范围(如 {1..5})测试,确认模式正确后再全量执行;
  5. 文件名中的编号必须连续,否则缺失的文件号会报错(可用 2>/dev/null 屏蔽)。