You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell格式化GetChildItem输出及自动读取最新子文件夹需求

PowerShell 测序样本配对脚本解决方案

核心实现逻辑

  • 自动定位最新子文件夹:扫描当前目录下的子文件夹,按创建时间排序取最新的
  • 精准配对R/F文件:提取文件名中的样本标识,匹配对应标记的文件
  • 按要求格式输出:每行一对文件路径,用TAB分隔写入文本

可直接运行的完整脚本

# 获取当前目录下最新创建的子文件夹
$latestFolder = Get-ChildItem -Directory | Sort-Object CreationTime -Descending | Select-Object -First 1

# 检查是否存在子文件夹
if (-not $latestFolder) {
    Write-Error "未检测到任何子文件夹,请确认路径正确"
    exit 1
}

# 获取目标文件夹内所有带R/F标记的测序文件(可根据实际后缀调整,比如.fastq.gz)
$allFiles = Get-ChildItem -Path $latestFolder.FullName -File -Filter "*[RF]*"

# 按样本名称分组(假设文件名格式为「样本名_R.后缀」或「样本名_F.后缀」,可按需修改正则)
$sampleGroups = $allFiles | Group-Object -Property {
    $_.BaseName -replace '_R$|_F$', ''  # 移除末尾的_R/_F,提取样本核心名称
}

# 生成配对内容
$outputContent = @()
foreach ($group in $sampleGroups) {
    $rFile = $group.Group | Where-Object { $_.BaseName -match '_R$' }
    $fFile = $group.Group | Where-Object { $_.BaseName -match '_F$' }
    
    if ($rFile -and $fFile) {
        # 拼接TAB分隔的一行内容
        $outputContent += "$($rFile.FullName)`t$($fFile.FullName)"
    } else {
        Write-Warning "样本「$($group.Name)」缺少对应的R或F文件,请检查"
    }
}

# 输出到文本文件(默认保存在最新子文件夹下)
$outputPath = Join-Path -Path $latestFolder.FullName -ChildPath "样本配对列表.txt"
$outputContent | Out-File -Path $outputPath -Encoding utf8

Write-Host "配对列表已生成:$outputPath"

脚本调整说明

  • 文件名格式适配:如果你的文件标记不是_R/_F(比如R1/R2、_forward/_reverse),只需修改两处正则:
    • 分组时的_R$|_F$改成对应标记(比如R1$|R2$)
    • 匹配文件时的_R$/_F$改成对应标记
  • 输出路径自定义:如果不想把结果保存在最新子文件夹,直接修改$outputPath的赋值即可

使用步骤

  1. 将脚本保存为测序样本配对.ps1
  2. 把脚本放到包含所有样本子文件夹的父目录中
  3. 右键选择「用PowerShell运行」,或在PowerShell窗口执行.\测序样本配对.ps1

内容的提问来源于stack exchange,提问作者Kristinn Gunnarsson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 08:03:26