我的知识记录

怎么提取文件夹中所有文件名(图文)

提取文件夹中所有文件名有多种方法,以下是不同操作系统和编程语言中的实现方式:

Windows 系统

方法1:使用命令提示符


 
cmd
# 提取当前目录下所有文件名到文本文件 dir /b > filenames.txt # 提取包括子目录的所有文件 dir /b /s > all_filenames.txt # 只提取特定类型的文件 dir *.txt /b > text_files.txt # 包含详细信息 dir > detailed_list.txt

方法2:使用 PowerShell


 
powershell
# 获取当前目录所有文件名 Get-ChildItem | Select-Object Name | Out-File filenames.txt # 获取包括子目录的所有文件 Get-ChildItem -Recurse | Select-Object FullName | Out-File all_files.txt # 只获取文件名(不含路径) Get-ChildItem -File | Select-Object Name | Out-File filenames.txt # 导出为CSV格式 Get-ChildItem | Select-Object Name, Length, LastWriteTime | Export-Csv file_list.csv

macOS/Linux 系统

使用终端命令


 
bash
# 列出当前目录所有文件名 ls > filenames.txt # 列出包括子目录的所有文件 find . -type f > all_files.txt # 只列出文件名(不包括路径) find . -type f -exec basename {} \; > filenames.txt # 列出特定类型文件 find . -name "*.txt" > text_files.txt # 使用 ls 递归列出 ls -R > recursive_list.txt

编程方式实现

Python


 
python
import os import csv # 方法1:简单列出所有文件名 def list_files_simple(directory): with open('filenames.txt', 'w') as f: for filename in os.listdir(directory): if os.path.isfile(os.path.join(directory, filename)): f.write(filename + '\n') # 方法2:递归列出所有子目录文件 def list_files_recursive(directory): with open('all_files.txt', 'w') as f: for root, dirs, files in os.walk(directory): for file in files: f.write(os.path.join(root, file) + '\n') # 方法3:导出为CSV格式 def list_files_csv(directory): with open('files.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(['Filename', 'Size', 'Modified Time']) for filename in os.listdir(directory): filepath = os.path.join(directory, filename) if os.path.isfile(filepath): stat = os.stat(filepath) writer.writerow([filename, stat.st_size, stat.st_mtime]) # 使用示例 list_files_simple('.') # 当前目录 list_files_recursive('.') # 包括子目录 list_files_csv('.') # CSV格式输出

Node.js


 
javascript
const fs = require('fs'); const path = require('path'); // 方法1:异步列出文件 function listFilesAsync(dir) { fs.readdir(dir, (err, files) => { if (err) throw err; const filenames = files.filter(file => { return fs.statSync(path.join(dir, file)).isFile(); }); fs.writeFile('filenames.txt', filenames.join('\n'), (err) => { if (err) throw err; console.log('文件名已保存到 filenames.txt'); }); }); } // 方法2:同步列出所有文件(包括子目录) function listAllFilesSync(dir, fileList = []) { const files = fs.readdirSync(dir); files.forEach(file => { const filePath = path.join(dir, file); const stat = fs.statSync(filePath); if (stat.isDirectory()) { listAllFilesSync(filePath, fileList); } else { fileList.push(filePath); } }); return fileList; } // 使用示例 listFilesAsync('.'); const allFiles = listAllFilesSync('.'); fs.writeFileSync('all_files.txt', allFiles.join('\n'));

Java


 
java
import java.io.*; import java.nio.file.*; import java.util.stream.*; public class FileListExtractor { // 列出当前目录文件 public static void listFiles(String directory) throws IOException { try (Stream<Path> paths = Files.list(Paths.get(directory))) { Files.write( Paths.get("filenames.txt"), paths.filter(Files::isRegularFile) .map(Path::getFileName) .map(Path::toString) .collect(Collectors.toList()) ); } } // 递归列出所有文件 public static void listAllFiles(String directory) throws IOException { try (Stream<Path> paths = Files.walk(Paths.get(directory))) { Files.write( Paths.get("all_files.txt"), paths.filter(Files::isRegularFile) .map(Path::toString) .collect(Collectors.toList()) ); } } public static void main(String[] args) { try { listFiles("."); listAllFiles("."); } catch (IOException e) { e.printStackTrace(); } } }

高级选项和过滤

PowerShell 高级用法


 
powershell
# 只列出特定类型的文件 Get-ChildItem -Filter "*.txt" | Select-Object Name | Out-File text_files.txt # 排除某些文件 Get-ChildItem -Exclude *.tmp, *.log | Select-Object Name | Out-File filtered_files.txt # 按大小排序 Get-ChildItem | Sort-Object Length -Descending | Select-Object Name, Length | Out-File sorted_files.txt # 包含详细属性 Get-ChildItem | Select-Object Name, Length, LastWriteTime | Export-Csv detailed_files.csv

Linux find 命令高级用法


 
bash
# 按文件大小过滤 find . -type f -size +1M > large_files.txt # 按修改时间过滤 find . -type f -mtime -7 > recent_files.txt # 按文件类型过滤 find . -type f -name "*.jpg" -o -name "*.png" > image_files.txt # 排除特定目录 find . -path "./node_modules" -prune -o -type f -print > files_without_node_modules.txt

输出格式选项

生成JSON格式


 
python
import json import os def list_files_json(directory): files = [] for filename in os.listdir(directory): filepath = os.path.join(directory, filename) if os.path.isfile(filepath): stat = os.stat(filepath) files.append({ 'name': filename, 'size': stat.st_size, 'modified': stat.st_mtime }) with open('files.json', 'w') as f: json.dump(files, f, indent=2) list_files_json('.')
选择哪种方法取决于你的操作系统、具体需求和技术背景。对于简单的一次性任务,使用系统命令最方便;对于复杂的处理需求,编程方式更灵活。
 

怎么提取文件夹中所有文件名(图文)

标签:

更新时间:2025-12-17 11:10:47

上一篇:如何修改文件后缀名改变文件类型(图文)

下一篇:如何修改文件格式类型为mp3(图文)