BASH脚本对猫更聪明

时间:2014-09-05 20:02:28

标签: bash unix cat

我在多个文件夹中有多个文件

[tiagocastro@cascudo clean_reads]$ ls
11  13  14  16  17  18  3  4  5  6  8  9 

我想创建一个小的bash脚本来连接这些文件:

11]$ ls
FCC4UE9ACXX-HUMcqqTAAFRAAPEI-206_L6_1.fq  FCC4UE9ACXX-HUMcqqTAAFRAAPEI-206_L7_1.fq
FCC4UE9ACXX-HUMcqqTAAFRAAPEI-206_L6_2.fq  FCC4UE9ACXX-HUMcqqTAAFRAAPEI-206_L7_2.fq

但只有L6与L6和L7与L7

现在我处于基础水平。我想学习如何更聪明地完成它,而不是重现我在脚本中可以在终端中执行的命令。

谢谢大家,帮助我。

1 个答案:

答案 0 :(得分:1)

这是一项免费的编程服务,但您可以从下一步学到一些东西:

#!/bin/bash
echo2() { echo "$@" >&2; }

get_Lnums() {
        find . -type f -regextype posix-extended -iregex '.*_L[0-9]+_[0-9]+\.fq' -maxdepth 1 -print | grep -oP '_\KL\d+' | sort -u
}

docat() {
        echo2 doing $(pwd)
        for lnum in $(get_Lnums)
        do
                echo cat *_${lnum}_*.fq "> new_${lnum}.all"   #remove (comment out) this line when satisfied
                #cat *_${lnum}_*.fq > new_${lnum}.all #and uncomment this
        done
}

while read -r -d $'\0' dir
do
        (cd "$dir" && docat)   #subshell - don't need cd back
done < <(find . -type dir -maxdepth 1 -mindepth 1 -print0)