脚本如何按大小排序文件

wen 实用脚本 26

本文目录导读:

脚本如何按大小排序文件

  1. Linux/Unix Shell脚本
  2. Python脚本
  3. PowerShell脚本
  4. 批量显示排序结果
  5. 递归目录排序
  6. 带单位显示的Python脚本
  7. 使用建议

Linux/Unix Shell脚本

#!/bin/bash
# 按文件大小排序(从小到大)
ls -lS
# 按文件大小排序(从大到小)
ls -lSr
# 显示人类可读的大小并排序
ls -lhS
# 递归所有文件并排序
find . -type f -exec ls -lhS {} \;

Python脚本

import os
import glob
def sort_files_by_size(directory="."):
    # 获取所有文件及其大小
    files = []
    for file in glob.glob(os.path.join(directory, "*")):
        if os.path.isfile(file):
            size = os.path.getsize(file)
            files.append((file, size))
    # 按大小排序(从小到大)
    files.sort(key=lambda x: x[1])
    # 打印结果
    for file, size in files:
        print(f"{file}: {size} bytes")
# 使用示例
sort_files_by_size("/path/to/directory")

PowerShell脚本

# 按大小排序(从小到大)
Get-ChildItem -File | Sort-Object Length
# 按大小排序(从大到小)
Get-ChildItem -File | Sort-Object Length -Descending
# 显示详细信息
Get-ChildItem -File | Sort-Object Length | Select-Object Name, Length

批量显示排序结果

#!/bin/bash
# 显示所有文件按大小排序
echo "=== 文件排序(从大到小)==="
ls -lhS
echo ""
echo "=== 文件排序(从小到大)==="
ls -lhSr

递归目录排序

#!/bin/bash
# 递归查找所有文件并排序
find . -type f -exec ls -lh {} \; | sort -k5 -h -r

带单位显示的Python脚本

import os
import glob
def human_readable_size(size):
    """将字节转换为人类可读格式"""
    for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
        if size < 1024.0:
            return f"{size:.2f} {unit}"
        size /= 1024.0
def sort_files_with_human_readable(directory="."):
    files = []
    for file in glob.glob(os.path.join(directory, "*")):
        if os.path.isfile(file):
            size = os.path.getsize(file)
            files.append((os.path.basename(file), size))
    # 排序
    files.sort(key=lambda x: x[1], reverse=True)  # 从大到小
    # 打印
    for name, size in files:
        print(f"{name:30} {human_readable_size(size)}")
# 使用
sort_files_with_human_readable("/path/to/directory")

使用建议

  • Shell脚本:对于简单快速排序,使用ls命令最简单
  • Python脚本:需要更多控制或跨平台时使用
  • PowerShell:Windows环境下推荐使用

选择哪个取决于你的操作系统和具体需求。

抱歉,评论功能暂时关闭!