如何比较两个文件名的一部分并使用' cat'将它们加在一起

时间:2017-09-27 19:21:59

标签: linux bash shell if-statement cat

这是我的代码:

ifelse(v1 > v2 - 5, seq_along(v1), 0)
# [1] 1 2 3 0

但我不知道如何只比较两个文件名' *'部分。它总是回复

 #!/bin/bash
 for file1 in 
 /net/zmf8/cb/37/lxy161830/work/target_readcount/*.readcount.txt;
 do
     for file2 in /net/zmf8/cb/37/lxy161830/work/nontarget_readcount/*.nontargetreawdcount.txt;
         if [ $( basename${file1:0:1} ) == $( basename${file2:0:1} ) ];then
             cat $file1 $file2 > '*.readcount.txt'
         fi
 done

1 个答案:

答案 0 :(得分:1)

你的内部循环需要一个do和一个done。我提出了一个编辑。

如果您只想跳过将同一文件与自身进行比较,可以试试这个:

case $file1 in
     $file2) continue;;
esac  

虽然在阅读时,文件名(甚至只是基本名称)永远不会发生碰撞 由于点,*.nontargetreadcount.txt永远不会匹配*.readcount.txt

另外,我认为您的输出文件名中不需要*。也许像是

cat $file1 $file2 > /tmp/$( basename $file1 ).$( basename $file2 )