python - 通过匹配文件名模式并连接文件内容来搜索文件

标签 python regex bash sorting concatenation

我有 10 个文件夹,其中包含格式如下的文件

"xaaNP_len_0.fa"

"xaaP_len_0.fa"

“xaa”部分对于它所在的文件夹来说是唯一的。文件夹被命名

[xaa, xab....xaj]

我想将与特定模式匹配的所有文件连接在一起。

例如我想连接所有

P_len_*.fa

其中 * 是 0 到 100 之间的整数。这不应包括“P”左侧有“N”的情况。

接下来我想连接所有

NP_len_*.fa

以相同的方式将所有 10 个目录中的文件放在一起。

文件的结构是扁平的。例如

xaa/xaaNP_len_0.fa
xab/xabNP_len_0.fa

应该全部进入一个名为

的文件
NP_len_0.fa

最佳答案

尝试这个脚本:

#!/bin/bash

NEXT=''

for (( ;; )); do
    if [[ -n $NEXT ]]; then
        LINE=$NEXT
        NEXT=''
    else
        read LINE || break
    fi

    FILES=("$LINE")
    FORMAT=${LINE#???/???}

    while read LINE; do
        if [[ $LINE == ???/???"$FORMAT" ]]; then
            FILES+=("$LINE")
        else
            NEXT=$LINE
            break
        fi
    done

    echo "Concatenating ${FILES[*]} to $FORMAT."

    cat "${FILES[@]}" > "$FORMAT"
done < <(
    find xa?/ -mindepth 1 -maxdepth 1 -type f -name '???P_len_*.fa' | sort -k 1.14 -n
    find xa?/ -mindepth 1 -maxdepth 1 -type f -name '???NP_len_*.fa' | sort -k 1.15 -n
)

关于python - 通过匹配文件名模式并连接文件内容来搜索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18480610/

相关文章:

python - 使用 PIL 将 ImageMagick FX 运算符转换为纯 Python 代码

python - 如何向我的街道名称正则表达式添加一种模式?

java - 为什么这个正则表达式不起作用?

arrays - 如何使用 BASH 将 tar 命令中的文件读取到数组中?

python - 使用 del 函数从列表中删除偶数

python - 使用python查找子矩阵中不同元素数量的最佳方法

java - Groovy 文字正则表达式/\\/未编译

python-3.x - 为什么我的标准输入重定向 ('<' ) 不能与 subprocess.Popen() 一起使用?

bash - psql --(记录|字段)-分隔符 NUL

Python Django 自定义模板标签 register.assignment_tag 不工作