怎么用脚本生成文件列表

wen 实用脚本 1

本文目录导读:

怎么用脚本生成文件列表

  1. 使用 Bash Shell 脚本
  2. 使用 Python 脚本
  3. 使用 Node.js 脚本
  4. PowerShell 脚本
  5. 实用脚本对比表
  6. 高级功能示例

使用 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)

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