根据另一个文件的内容重命名文件

用户3781528

目录包含多个bam,对应的bam.bai文件以及以制表符分隔的matrixkey.txt。matrixkey在第一列中包含条形码,这些条形码也可以在bam / bai文件名中找到。

For example:   Barcode001    Sample1

我想使用条形码来匹配带有样品名称的文件(位于matrixkey的第二列),并将所有文件重命名为:'barcode'_'sampleid'.bam / bam.bai请看一下我的代码下面并提出改进建议。

该例程运行无错误,但文件未重命名。

#!/usr/bin/perl
use warnings;
use strict;
use File::Copy qw(move);

my $home="/data/";                                                     

my $bam_directory = $home."test_all_runs/Test_Runs";

my $matrix_key = $home."test_all_runs/Test_Runs/matrixkey.txt";

my @matrix_key = ();

open(TXT2, "$matrix_key");
        while (<TXT2>){  
                push (@matrix_key, $_);   
                }
close(TXT2);

my @bam_files = glob "$bam_directory/*.bam";
my @bai_files = glob "$bam_directory/*.bai";

for my $bam_file (@bam_files){

my $matrix_barcode = "";
my $matrix_sample_id = "";
        foreach (@matrix_key){
                chomp($_);
                my @matrix_key = split ("\t", $_);##  
                if (index ($bam_file,$matrix_key[0]) != -1) {
                  $matrix_barcode = $matrix_key[0]; print $matrix_key[0];
                  $matrix_sample_id = $matrix_key[1];
                  chomp $matrix_barcode;
                  chomp $matrix_sample_id;
                  move $bam_file, $bam_directory."/".$matrix_sample_id."_".$matrix_barcode.".bam";
                }       
        }

}
艾维克

您可以尝试使用简单的awk脚本作为生成这些路径的替代方法,例如

awk -v bam_directory=dir_name -F"\t" '{print "mv " bam_directory "/" $1 ".bam " bam_directory "/" $1 "_" $2 ".bam"}' matrixkey.txt> move_commands

并在实际文件移动之前检查源文件路径

cut -f2 -d' ' move_path |xargs  ls -l 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据内容重命名文件

根据内容重命名 JSON 文件

根据JSON内容重命名文件

根据另一个文件的存在来重命名文件夹中的文件

根据文件内容重命名文件文件夹

根据另一个文件内容中的完全匹配重命名文件名的一部分

从内容重命名文件

根据 *txt 文件的内容重命名 *txt 文件

根据文件内容重命名txt文件(OSX)

根据另一个文件中的字符串重命名文件夹中的文件 - 使用 Python

根据python中csv文件中的一些内容重命名csv文件

根据另一个目录中文件的名称重命名目录中的文件

根据元素的内容重命名XML文件

Excel / VBA:根据内容重命名文件

将文件内容重定向到C中的另一个程序

如何将一个文件的所有内容重定向到另一个文件?

用文件内容重命名文件

管道:根据另一个的内容打开文件

根据另一个DataFrame重命名列

使用Git重命名:使用git mv与删除文件并添加另一个文件

重命名多个文件,而不会在php中覆盖另一个文件

Bash重命名文件基于从另一个文件打印的行

根据文件内容重命名文件夹中的所有txt文件

如何将一个文件重命名为另一个文件系统?

将目录的内容重定向到父文件夹中的另一个目录

用R中的另一个特定模式重命名多个文件的特定模式

查找文件并重命名并移动到另一个目录

将所选文件的内容合并到 .txt 中,然后重命名该 txt e 将其移动到另一个文件夹中

在使用while读取行将一个文件的内容重定向到另一个文件时,它仅显示数字“ 2”