0

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

谢谢!

4

1 回答 1

4

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

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

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

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

或类似的东西。

于 2012-06-14T11:32:46.153 回答