本文目录导读:

使用 Bash Shell 脚本
基础文件列表
#!/bin/bash # generate_file_list.sh # 自动获取当前目录下的所有文件 ls -la > file_list.txt echo "文件列表已保存到 file_list.txt" # 或者使用 find 获取详细路径 find . -type f > files.txt
递归列出所有文件
#!/bin/bash # 递归列出所有文件(包含子目录) find /path/to/directory -type f -name "*.txt" > text_files.txt # 列出所有文件及大小 ls -lhR > full_listing.txt
使用 Python 脚本
简单版本
# generate_file_list.py
import os
def generate_file_list(directory, output_file):
"""生成目录下所有文件的列表"""
with open(output_file, 'w', encoding='utf-8') as f:
for root, dirs, files in os.walk(directory):
for file in files:
f.write(os.path.join(root, file) + '\n')
print(f"文件列表已保存到 {output_file}")
# 使用示例
generate_file_list('.', 'file_list.txt')
带文件信息的版本
import os
from datetime import datetime
def generate_detailed_file_list(directory, output_file):
"""生成带详细信息(大小、修改时间)的文件列表"""
with open(output_file, 'w', encoding='utf-8') as f:
for root, dirs, files in os.walk(directory):
for file in files:
filepath = os.path.join(root, file)
try:
# 获取文件信息
stat = os.stat(filepath)
size = stat.st_size
mtime = datetime.fromtimestamp(stat.st_mtime).strftime('%Y-%m-%d %H:%M:%S')
# 写入信息
f.write(f"{filepath}\t{size} bytes\t{mtime}\n")
except:
pass
print(f"详细文件列表已保存到 {output_file}")
# 使用示例
generate_detailed_file_list('.', 'detailed_file_list.txt')
使用 Node.js 脚本
// generate_file_list.js
const fs = require('fs');
const path = require('path');
function generateFileList(directory, outputFile) {
const results = [];
function walkDirectory(dir) {
const files = fs.readdirSync(dir);
files.forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
walkDirectory(filePath);
} else {
results.push({
path: filePath,
size: stat.size,
modified: stat.mtime
});
}
});
}
walkDirectory(directory);
// 写入文件
const content = results.map(file =>
`${file.path}\t${file.size} bytes\t${file.modified.toISOString()}`
).join('\n');
fs.writeFileSync(outputFile, content);
console.log(`文件列表已保存到 ${outputFile}`);
}
// 使用示例
generateFileList('.', 'file_list.txt');
PowerShell 脚本
# generate_file_list.ps1
param(
[string]$Path = ".",
[string]$OutputFile = "file_list.txt"
)
# 生成文件列表
Get-ChildItem -Path $Path -Recurse -File |
Select-Object FullName, Length, LastWriteTime |
Export-Csv -Path $OutputFile -NoTypeInformation
Write-Host "文件列表已保存到 $OutputFile"
实用脚本对比表
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Bash | Linux/Mac 快速操作 | 简单快速,系统自带 | 跨平台差 |
| Python | 复杂数据处理 | 功能强大,可定制 | 需要环境 |
| Node.js | Web 项目集成 | 与现代项目集成好 | 需要Node环境 |
| PowerShell | Windows 系统 | 功能强大,集成好 | 仅限Windows |
高级功能示例
过滤特定文件类型
#!/bin/bash # 只列出特定类型的文件 find . -type f \( -name "*.pdf" -o -name "*.docx" \) > documents.txt
生成 CSV 格式
import os
import csv
def generate_csv(directory, output_file):
with open(output_file, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['File Path', 'Size', 'Modified Time'])
for root, dirs, files in os.walk(directory):
for file in files:
filepath = os.path.join(root, file)
stat = os.stat(filepath)
writer.writerow([filepath, stat.st_size, stat.st_mtime])
print(f"CSV 文件已生成: {output_file}")
选择哪种方法取决于你的:
- 操作系统(Windows/Linux/Mac)
- 使用频率(一次性还是定期运行)
- 输出格式要求(纯文本、CSV、JSON)
- 环境依赖(是否已有Python/Node.js)