我有 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/