查看文件名并在bash中连接它们

时间:2012-06-14 11:29:36

标签: bash

我之前从未在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的文件。

谢谢!

1 个答案:

答案 0 :(得分:4)

为什么要写一个循环来做过滤通配符已经为你做了什么? (您使用相同的东西来过滤*.gz。)

files1=`echo *R1*.gz`
files2=`echo *R2*.gz`

既然你说要连接所有这些文件,那就是

zcat *R1.gz > result_R1
zcat *R2.gz > result_R2

或类似的东西。