本文目录导读:

按修改时间排序(最常用)
Linux/Mac 版本
#!/bin/bash
# 按修改时间排序(最新的在前)
ls -lt
# 按修改时间排序(最旧的在前)
ls -ltr
# 只显示文件名和修改时间
ls -lt | awk '{print $6, $7, $8, $9}'
# 递归显示所有文件
ls -ltR
# 按时间排序并显示详细格式
ls -l --time-style=long-iso -t
Windows CMD
@echo off :: 按修改时间排序(最新的在前) dir /O-D :: 按修改时间排序(最旧的在前) dir /OD :: 按创建时间排序 dir /O-D /T:C :: 递归显示所有文件 dir /S /O-D
Windows PowerShell
# 按修改时间排序(最新的在前)
Get-ChildItem | Sort-Object LastWriteTime -Descending
# 按修改时间排序(最旧的在前)
Get-ChildItem | Sort-Object LastWriteTime
# 按创建时间排序
Get-ChildItem | Sort-Object CreationTime -Descending
# 详细格式输出
Get-ChildItem | Sort-Object LastWriteTime -Descending |
Format-Table Name, LastWriteTime, Length -AutoSize
Python 脚本(跨平台)
#!/usr/bin/env python3
import os
import glob
from pathlib import Path
# 按修改时间排序
def sort_by_mtime(path="."):
files = []
for f in glob.glob(os.path.join(path, "*")):
if os.path.isfile(f):
mtime = os.path.getmtime(f)
files.append((mtime, f))
# 按时间排序(最新的在前)
files.sort(reverse=True)
return files
# 使用示例
files = sort_by_mtime()
for mtime, filepath in files:
print(f"{time.ctime(mtime)} - {filepath}")
# 更现代的版本使用 pathlib
from pathlib import Path
from datetime import datetime
def sort_files_by_time(directory="."):
path = Path(directory)
files = [f for f in path.iterdir() if f.is_file()]
# 按修改时间排序
sorted_files = sorted(files, key=lambda f: f.stat().st_mtime, reverse=True)
for f in sorted_files:
mtime = datetime.fromtimestamp(f.stat().st_mtime)
print(f"{mtime.strftime('%Y-%m-%d %H:%M:%S')} - {f.name}")
sort_files_by_time()
高级功能脚本
按时间排序并按扩展名过滤
#!/usr/bin/env python3
import os
from datetime import datetime
from pathlib import Path
def sort_files_by_time_with_filter(directory=".", extensions=None,
sort_by="mtime", reverse=True):
"""
按时间排序文件,支持过滤
Args:
directory: 目录路径
extensions: 文件扩展名列表,如 ['.txt', '.py']
sort_by: 排序依据 ('mtime', 'ctime', 'atime')
reverse: True为最新在前,False为最旧在前
"""
path = Path(directory)
files = []
for f in path.iterdir():
if f.is_file():
# 过滤扩展名
if extensions and f.suffix.lower() not in extensions:
continue
# 获取时间戳
stat = f.stat()
if sort_by == "mtime":
timestamp = stat.st_mtime
elif sort_by == "ctime":
timestamp = stat.st_ctime
elif sort_by == "atime":
timestamp = stat.st_atime
else:
timestamp = stat.st_mtime
files.append((timestamp, f))
# 排序
files.sort(reverse=reverse)
return files
# 使用示例
# 查找所有Python文件,按修改时间排序
python_files = sort_files_by_time_with_filter(
directory=".",
extensions=['.py', '.txt'],
sort_by="mtime",
reverse=True
)
for timestamp, filepath in python_files:
dt = datetime.fromtimestamp(timestamp)
print(f"{dt.strftime('%Y-%m-%d %H:%M:%S')} - {filepath.name}")
递归处理子目录
#!/usr/bin/env python3
from pathlib import Path
from datetime import datetime
def recursive_sort_files(root_dir=".", pattern="*"):
"""
递归查找文件并按时间排序
Args:
root_dir: 根目录
pattern: 文件模式,如 "*.txt"
"""
files = []
for f in Path(root_dir).rglob(pattern):
if f.is_file():
mtime = f.stat().st_mtime
files.append((mtime, f))
# 按修改时间排序(最新的在前)
files.sort(reverse=True)
return files
# 使用示例
files = recursive_sort_files(".", "*.log")
for mtime, filepath in files:
dt = datetime.fromtimestamp(mtime)
print(f"{dt.strftime('%Y-%m-%d %H:%M:%S')} - {filepath}")
使用 find 命令(Linux/Mac)
# 查找文件并按时间排序
find . -type f -printf '%T@ %p\n' | sort -rn
# 格式化输出
find . -type f -printf '%T@ %p\n' | sort -rn |
while read timestamp file; do
date -d @$(printf "%.0f" $timestamp) '+%Y-%m-%d %H:%M:%S'
echo " - $file"
done
# 限制文件数量(显示最近10个)
find . -type f -printf '%T@ %p\n' | sort -rn | head -10
实用工具脚本
自动清理旧文件
#!/bin/bash
# 删除30天前的文件
find /path/to/directory -type f -mtime +30 -delete
# 将7天前的文件移动到归档目录
find /path/to/source -type f -mtime +7 -exec mv {} /path/to/archive/ \;
# 移动最近修改的文件到工作目录
find /path/to/source -type f -mtime -1 -exec cp {} /path/to/workdir/ \;
监控文件变化
#!/bin/bash
# 实时监控目录变化
inotifywait -m /path/to/watch -e create -e modify -e delete |
while read path action file; do
echo "The file '$file' appeared in directory '$path' via '$action'"
done
# 使用 while 循环持续检查新文件
while true; do
latest_file=$(ls -t | head -1)
echo "Latest file: $latest_file"
sleep 5 # 每5秒检查一次
done
使用建议
- 简单需求:使用
ls -lt或dir /O-D - 跨平台:使用 Python 脚本
- 复杂过滤:使用 Python 或 find 命令
- 自动化任务:使用 bash 脚本配合 cron 定时任务
选择最适合你场景的实现方式即可。