linux - 从文件中获取模式并从不同的目录中获取与模式关联的所有文件

标签 linux

我有一个这样的文件名列表:

T0rain.Zfp691_0895.2_v2_deBruijn.txt
Train.Hbp1_2241.2_v2_deBruijn.txt
Train.Zfp740_0925.2_v2_deBruijn.txt
Train.Hbp1_2241.3_v1_deBruijn.txt
Train.Zfp740_0925.3_v1_deBruijn.txt
Train.Hic1_2816.2_v1_deBruijn.txt
Train.Zic1_0991.2_v1_deBruijn.txt

我想提取 Train 之间的所有名称。和_像这样:

Zfp691
Hbp1
Zfp740
Hbp1
zfp740
Hic1
Zic1

比起我还有另一个文件列表:

Zfp691.pwm.txt
Hbp1.pwm.txt
Zfp740.pwm.txt
Hbp1.pwm.txt
zfp740.pwm.txt
Hic1.pwm.txt
Zic1.pwm.txt
Zic1.pwm.RC.txt

我想提取所有匹配的案例,例如:

Train.Zic1_0991.2_v1_deBruijn.txt 匹配 Zic1.pwm.txt 和 Zic1.pwm.RC.txt

这些输出参数被传递到我的 R 脚本。所以 SH 脚本应该返回参数 =

$i (Train.Zic1_0991.2_v1_deBruijn.txt) +  $j Zic1.pwm.txt
$i (Train.Zic1_0991.2_v1_deBruijn.txt) +  $j Zic1.pwm.RC.txt

我不知道这是否可行。我开始尝试这样做:

#!/bin/bash

for i in input/*/testtrain/Train*deBruijn.txt
do
    $i 
done

for j in input/All_PWMs/*/*.txt
do
    $j 
done

echo qsub script3.sh $i $j

在这里,我尝试将参数提供给 script3.sh,但这只会返回 1 个组合。有人提示或提示吗?比如如何匹配/grep 名称。或者通过参数的不同方式。

Script3.sh 用于在 linux 命令行中调用 R。因此,args 只是通过此文件传递,以调用具有 debruijn 和 pwm 的 1 种组合的单个 R 作业。

r 脚本需要 1 个 debruijn.txt 和 1 个 pwm.txt 才能计算出我需要的值。 所以对于这个例子,我将得到 2 种组合:

debruijn.txt and pwm1.txt   -----> pass the args to R as combination 1
debruijn.txt and pwm2.txt   -----> pass the args to R as combination 2

最佳答案

Perl:

#!/usr/bin/perl

@files=glob("*.*_*");

foreach $f (@files) {
  $f =~ /^[^\.]+\.([^_]+)_/;
  $pre = $1;
  @f2 = glob ("$1*");
  print "$f found files ".join(" ",@f2)."\n";
  system ("./script.sh",$f,@f2) && die ($!);
}

给出输出:

T0rain.Zfp691_0895.2_v2_deBruijn.txt found files Zfp691.pwm.txt
Train.Hbp1_2241.2_v2_deBruijn.txt found files Hbp1.pwm.txt
Train.Hbp1_2241.3_v1_deBruijn.txt found files Hbp1.pwm.txt
Train.Hic1_2816.2_v1_deBruijn.txt found files Hic1.pwm.txt
Train.Zfp740_0925.2_v2_deBruijn.txt found files Zfp740.pwm.txt
Train.Zfp740_0925.3_v1_deBruijn.txt found files Zfp740.pwm.txt
Train.Zic1_0991.2_v1_deBruijn.txt found files Zic1.pwm.RC.txt Zic1.pwm.txt

我的“script.sh”是:

#!/bin/sh

echo Script got $0 $1 $2 $3

确保你 chmod 755 所有的脚本,等等。

关于linux - 从文件中获取模式并从不同的目录中获取与模式关联的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15638999/

相关文章:

linux - glfw makefile 在 Ubuntu 上出现 "generating html documentation"时失败

Linux 设置文件结尾(收缩、截断、删除一些数据@结尾)

linux - AWS 中的备份和停用实例存储

c++ - 从 C++ 使用 netlink 的最佳方法是什么?

linux - 谁能告诉我获取当前最大大小以将对象存储在 Memcached 中的命令

linux - 使用 Node.js 的大量 Inode

c++ - 是否有任何标准方法可以将调试打印放入库中?

java - 如何使用java、Linux检查是否安装了特定软件

java - 使用 java 从 sybase db 读取数据时 Linux 上的特殊字符问题

linux - 为系统文件创建和使用 Mercurial 存储库