我之前从未在bash中编程过。 我正在读取目录中的所有文件,然后我需要查看它们的名称并检查是否有R1或R2,具体取决于我需要连接所有具有R1的文件和所有具有R2的文件名字。 所以作为最终输出,我希望有类似的东西:
字符串1 = file1_R1.gz file2_R1.gz file3_R1.gz ...
字符串2 = file1_R2.gz file2_R2.gz file3_R2.gz ...
我该怎么做?到目前为止我唯一的代码是:
#!/bin/bash
list=$(echo *.gz)
strR1="R1"
strR2="R2"
if [ "$list" = "*.gz" ] ; then list=""; fi
for str in $list
do
if echo "$strR1" | grep -q "$str"; then
echo "str";
else
echo "no file";
fi
done
我可以读取目录中的所有文件,但是当我这样做时,如果我找不到任何带有R1的文件,并且我知道名称中至少有4个带有R1的文件。
谢谢!
答案 0 :(得分:4)
为什么要写一个循环来做过滤通配符已经为你做了什么? (您使用相同的东西来过滤*.gz
。)
files1=`echo *R1*.gz`
files2=`echo *R2*.gz`
既然你说要连接所有这些文件,那就是
zcat *R1.gz > result_R1
zcat *R2.gz > result_R2
或类似的东西。