如何筛选文件夹中含特定关键词的CSV文件并分离移动
解决方案
下面提供两种实用的实现方式,按需选择:
Python 脚本(灵活自定义)
适合需要复杂筛选逻辑或批量自动化处理的场景。
基础版(按文件名筛选)
import os import shutil # 替换成你自己的路径和关键词 source_folder = "/Users/xxx/csv_files" target_folder = "/Users/xxx/filtered_csvs" target_keyword = "2024_q3" # 自动创建目标文件夹,不存在就新建 os.makedirs(target_folder, exist_ok=True) # 遍历源文件夹里的所有文件 for file_name in os.listdir(source_folder): # 只处理CSV文件,且文件名包含指定关键词 if file_name.endswith(".csv") and target_keyword in file_name: source_path = os.path.join(source_folder, file_name) target_path = os.path.join(target_folder, file_name) shutil.move(source_path, target_path) print(f"已移动: {file_name}")
进阶版(按文件内容筛选)
如果需要检查CSV文件内容里是否有关键词,替换上面的判断逻辑即可:
for file_name in os.listdir(source_folder): if file_name.endswith(".csv"): source_path = os.path.join(source_folder, file_name) try: # 只读取前5行检查,避免大文件拖慢速度 with open(source_path, "r", encoding="utf-8") as f: for line in f.readlines()[:5]: if target_keyword in line: shutil.move(source_path, os.path.join(target_folder, file_name)) print(f"已移动内容含关键词的文件: {file_name}") break except Exception as e: print(f"处理{file_name}时出错: {str(e)}")
命令行快速操作
不用写脚本,直接跑命令就能完成,适合临时处理。
Windows(PowerShell)
# 替换成你的实际路径和关键词 $source = "C:\Users\xxx\csv_source" $target = "C:\Users\xxx\csv_target" $keyword = "2024_q3" # 创建目标文件夹 New-Item -ItemType Directory -Force -Path $target # 移动文件名含关键词的CSV Get-ChildItem $source -Filter *.csv | Where-Object { $_.Name -match $keyword } | Move-Item -Destination $target
Linux/macOS(终端)
# 替换成你的实际路径和关键词 source_dir="/home/xxx/csvs" target_dir="/home/xxx/filtered_csvs" keyword="2024_q3" # 创建目标文件夹 mkdir -p $target_dir # 移动文件名含关键词的CSV mv $source_dir/*$keyword*.csv $target_dir/
如果要按文件内容筛选,用下面的命令:
- Linux/macOS:
grep -l "$keyword" $source_dir/*.csv | xargs -I {} mv {} $target_dir/
- Windows PowerShell:
Get-ChildItem $source -Filter *.csv | Select-String -Pattern $keyword | Select-Object -Unique Path | Move-Item -Destination $target
内容的提问来源于stack exchange,提问作者johnnyeightpence
相关产品推荐
相关产品推荐

