nev*_*int 6 linux unix perl rename
我有名称如下所示的文件:
Sim1-2_40.36.chr20_sb.foo.indel.novoalign.sam
Sim1-2_40.36.chr20_sb.foo.indel.bwa.sam
Run Code Online (Sandbox Code Playgroud)
我想要做的是indel用snp产生的名称替换所有
Sim1-2_40.36.chr20_sb.foo.snp.novoalign.sam
Sim1-2_40.36.chr20_sb.foo.snp.bwa.sam
Run Code Online (Sandbox Code Playgroud)
但是为什么这个 unix 命令不起作用?
$ rename 's/indel/snp/' *.sam
Run Code Online (Sandbox Code Playgroud)
rename不进行sed-style 替换。这个非常短的 Perl 脚本将让您执行以下操作regmv *.sam s/indel/snp/:
#!/usr/bin/perl -w
#
# regmv - Rename files using a regular expression
#
# This program renames files by using a regular expression to
# determine their new name.
#
# Usage: regmv file [file ...] regexp
#
# $Id: regmv,v 1.1 1998/10/14 17:07:55 blrfl Exp $
#
sub at_clean()
{
my $message = $@;
$message =~ s|\s+at /.*$||s;
return $message;
}
(@ARGV > 1)
|| die "Usage: regmv [options] file [file ...] regexp\n";
my $expr = pop @ARGV;
$_ = 'SomeValue';
eval "\$_ =~ $expr";
die "Yuck: " . at_clean() if $@;
foreach (@ARGV)
{
my $old = $_;
eval "\$_ =~ $expr";
next if $_ eq $old;
(rename $old, $_)
|| die "Rename failed: $!\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |