我已经说了100个文本文件,其中50个文件名以sshv2l开头,另外50个没有sshv2l。我想将它们合并成这样的循环(如下),其中我有两组合并文件。对于使用sshv2l的文件,我做了如下的操作,但是没有sshv2l就不能合并文件。如果没有条件,如何在bash中的for循环中编写?
for f in sshv2l*; do
echo "Merging file :" $f
cat ${f} >> sshv2l_merged.fastq
done
最佳答案
您的循环代码可以替换为singlecat
:
cat sshv2l* >> /path/to/sshv2l_merged.fastq
现在要获取所有不是以
sshv2l
开头的文件,可以使用extglob
否定glob:# enable extglob
shopt -s extglob nullglob
cat !(sshv2l*) >> /path/to/not_sshv2l_merged.fastq
# disable extglob
shopt -u extglob nullglob
我添加了一些虚构的
/path/to/
路径,以确保将*.fastq
文件保存在当前目录之外,避免它们在cat
命令中连接起来。