我在多个文件夹中有多个文件
[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
现在我处于基础水平。我想学习如何更聪明地完成它,而不是重现我在脚本中可以在终端中执行的命令。
谢谢大家,帮助我。
答案 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)