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

如何清理视频文件夹:针对前缀相同的多分辨率视频文件保留最大文件并删除其余文件

解决方案:保留同前缀视频中体积最大的文件,删除其余

针对你要清理视频文件夹,保留同前缀(最后一个下划线前的名称)中体积最大文件的需求,我给你整理了几个不同平台的实用方案,都能快速搞定:

方案1:Windows PowerShell 实现

这个方法适合Windows用户,直接用系统自带的PowerShell就能操作,不用额外安装工具:

# 先切换到目标视频文件夹
cd "C:\你的视频文件夹路径"

# 按前缀分组,每组保留体积最大的文件,删除其他
Get-ChildItem -Filter *.mp4 |  # 这里可以改成你的视频格式,比如*.mkv、*.avi
    Group-Object -Property { $_.BaseName -split '_' | Select-Object -SkipLast 1 | Join-String -Separator '_' } |
    ForEach-Object {
        # 找到组里体积最大的文件
        $largestFile = $_.Group | Sort-Object -Property Length -Descending | Select-Object -First 1
        # 遍历组里的其他文件并删除(可以先加-WhatIf参数测试,确认无误后再去掉)
        $_.Group | Where-Object { $_ -ne $largestFile } | Remove-Item -WhatIf
    }

说明:

  • 把C:\你的视频文件夹路径替换成你实际的文件夹路径
  • *.mp4可以换成你需要处理的视频格式,比如同时处理多种格式可以用*.*(但要注意排除非视频文件)
  • -WhatIf参数会模拟删除操作,不会真的删文件,先运行一次确认要删的文件是对的,再去掉这个参数执行真正的删除

方案2:Linux/macOS Bash 脚本实现

如果你用Linux或者macOS,用Bash脚本更方便:

#!/bin/bash

# 切换到目标文件夹(替换成你的路径)
cd /path/to/your/video/folder || exit

# 遍历所有视频文件(这里用*.mp4,可按需修改)
for file in *.mp4; do
    # 获取前缀(去掉最后一个下划线及后面的内容)
    prefix="${file%_*}"
    # 把同前缀的文件放到临时数组里
    files=("$prefix"_*)
    # 如果同前缀文件数量大于1,才需要处理
    if [ "${#files[@]}" -gt 1 ]; then
        # 找到体积最大的文件
        largest=$(printf "%s\n" "${files[@]}" | xargs ls -lS | head -n1 | awk '{print $9}')
        # 删除同前缀的其他文件(可以先把rm换成echo测试)
        for f in "${files[@]}"; do
            if [ "$f" != "$largest" ]; then
                rm "$f"
                # 测试阶段用下面这行代替rm:
                # echo "要删除的文件:$f"
            fi
        done
    fi
done

说明:

  • 把/path/to/your/video/folder换成实际的文件夹路径
  • *.mp4可修改为你需要的格式,比如*.{mp4,mkv,avi}处理多种格式
  • 测试阶段把rm "$f"换成echo "要删除的文件:$f",确认无误后再改回rm

方案3:Python 跨平台脚本实现

如果你喜欢用Python,这个脚本跨Windows、Linux、macOS都能用,灵活性更高:

import os

def keep_largest_video(folder_path):
    # 按前缀分组存储文件
    file_groups = {}
    # 遍历文件夹里的所有文件
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        # 只处理文件,跳过文件夹
        if not os.path.isfile(file_path):
            continue
        # 获取前缀(最后一个下划线前的部分)
        if '_' in filename:
            prefix = filename.rsplit('_', 1)[0]
        else:
            # 如果文件名没有下划线,跳过或者单独处理(按需调整)
            continue
        # 把文件路径加入对应分组
        if prefix not in file_groups:
            file_groups[prefix] = []
        file_groups[prefix].append(file_path)
    
    # 处理每个分组
    for prefix, files in file_groups.items():
        if len(files) <= 1:
            continue  # 只有一个文件,不需要处理
        # 按文件体积排序,取最大的那个
        files.sort(key=lambda x: os.path.getsize(x), reverse=True)
        largest_file = files[0]
        # 删除其他文件(测试阶段可以把os.remove改成print)
        for file in files[1:]:
            print(f"删除文件:{file}")
            # os.remove(file)  # 测试无误后打开这行

if __name__ == "__main__":
    # 替换成你的视频文件夹路径
    target_folder = "C:\你的视频文件夹路径"  # Windows路径
    # target_folder = "/path/to/your/video/folder"  # Linux/macOS路径
    keep_largest_video(target_folder)

说明:

  • 替换target_folder为实际的文件夹路径,注意Windows路径用双反斜杠或者加r前缀(比如r"C:\Videos")
  • 测试阶段先注释掉os.remove(file),用print查看要删除的文件,确认后再取消注释

重要注意事项

  1. 先备份文件:不管用哪个方案,建议先把视频文件夹备份一份,避免误删重要文件
  2. 先测试再执行:所有方案都提供了测试方式(比如PowerShell的-WhatIf,Bash的echo,Python的print),一定要先测试确认要删除的文件是正确的
  3. 确认命名规则:确保你的视频文件名确实是最后一个下划线后面跟着分辨率(比如video_480p.mp4),如果文件名有多个下划线但前缀是前面的部分,代码里的前缀提取逻辑已经考虑到了(取最后一个下划线前的所有内容)

内容的提问来源于stack exchange,提问作者AleXSR700

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 08:59:08