本文目录导读:

Python 版本(最推荐)
基础递归遍历
import os
def traverse_directory(path):
for root, dirs, files in os.walk(path):
level = root.replace(path, '').count(os.sep)
indent = ' ' * 4 * level
print(f"{indent}{os.path.basename(root)}/")
sub_indent = ' ' * 4 * (level + 1)
for file in files:
print(f"{sub_indent}{file}")
# 使用示例
traverse_directory('/path/to/directory')
高级版本(带过滤和大小统计)
import os
def advanced_traverse(path, file_extensions=None, min_size=None):
results = []
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
# 文件扩展名过滤
if file_extensions:
ext = os.path.splitext(file)[1]
if ext not in file_extensions:
continue
# 文件大小过滤
if min_size and file_size < min_size:
continue
results.append({
'path': file_path,
'size': file_size,
'modified': os.path.getmtime(file_path)
})
return results
# 使用示例
files = advanced_traverse('.', file_extensions=['.py', '.txt'], min_size=1024)
for f in files:
print(f"路径: {f['path']}, 大小: {f['size']} bytes")
Bash/Shell 版本
递归列出所有文件
#!/bin/bash
# 方法1: 使用 find
find /path/to/directory -type f 2>/dev/null
# 方法2: 树形结构
find /path/to/directory -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
# 方法3: 带文件大小
find /path/to/directory -type f -exec ls -lh {} \;
# 方法4: 只显示文件名和大小
find /path/to/directory -type f -exec sh -c 'echo "{}: $(stat -f%z "{}" 2>/dev/null || stat -c%s "{}")"' \;
Node.js 版本
异步遍历
const fs = require('fs');
const path = require('path');
async function traverseDirectory(dirPath) {
const files = await fs.promises.readdir(dirPath);
for (const file of files) {
const fullPath = path.join(dirPath, file);
const stat = await fs.promises.stat(fullPath);
if (stat.isDirectory()) {
console.log(`📁 ${file}/`);
await traverseDirectory(fullPath);
} else {
console.log(`📄 ${file} (${stat.size} bytes)`);
}
}
}
// 使用示例
traverseDirectory('./').catch(console.error);
Java 版本
递归遍历
import java.io.File;
public class DirectoryTraverser {
public static void traverse(File dir, String indent) {
File[] files = dir.listFiles();
if (files == null) return;
for (File file : files) {
if (file.isDirectory()) {
System.out.println(indent + "[DIR] " + file.getName());
traverse(file, indent + " ");
} else {
System.out.println(indent + "[FILE] " + file.getName() +
" (" + file.length() + " bytes)");
}
}
}
public static void main(String[] args) {
traverse(new File("/path/to/directory"), "");
}
}
Windows Batch 版本
@echo off
:: 递归列出所有文件
dir /s /b "C:\path\to\directory"
:: 树形结构
tree "C:\path\to\directory" /f
:: 带文件大小
for /r "C:\path\to\directory" %%f in (*) do (
echo %%f - %%~zf bytes
)
实用功能扩展
Python 版本:带进度条和异常处理
import os
import sys
from pathlib import Path
def safe_traverse(path, ignore_errors=True):
"""安全的目录遍历,支持并行和错误处理"""
results = []
try:
path = Path(path)
for item in path.rglob('*'):
try:
if item.is_file():
results.append({
'name': item.name,
'path': str(item),
'size': item.stat().st_size,
'suffix': item.suffix
})
except PermissionError:
if not ignore_errors:
print(f"权限不足: {item}", file=sys.stderr)
continue
except Exception as e:
print(f"遍历错误: {e}", file=sys.stderr)
return results
# 使用示例
files = safe_traverse('.')
print(f"共找到 {len(files)} 个文件")
过滤特定模式的版本
import fnmatch
import os
def find_files_by_pattern(root_dir, pattern):
"""按文件名模式查找文件"""
matches = []
for root, dirs, files in os.walk(root_dir):
for filename in fnmatch.filter(files, pattern):
matches.append(os.path.join(root, filename))
return matches
# 使用示例
# 查找所有 .log 文件
log_files = find_files_by_pattern('.', '*.log')
print(f"找到 {len(log_files)} 个日志文件")
# 查找 data_2024_*.csv 格式的文件
data_files = find_files_by_pattern('.', 'data_2024_*.csv')
这些脚本可以根据你的具体需求修改,比如添加文件类型过滤、大小限制、递归深度控制等,选择最适合你使用场景的语言和实现方式。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播