linux 防止修改文件名,linux /R 修改文件名

目的:

将SRR编号改成对应的名称。 比如SRR885007 修改成IgG_E7.75_embryo.

实际上就是按照文件里面对应关系,修改名称.

9bab45b846ad

2020年4月23日15:16:17

构造一个例子:

比如将SRR001_R1.fq改成Test1_R1.fq

## touch 建立文件

touch SRR00{1..3}_R{1..2}.fq

kcao@DESKTOP-95JHONS:~/TMP_dir$ ll

total 0

drwxrwxrwx 1 kcao kcao 512 Apr 23 12:17 ./

drwxr-xr-x 1 kcao kcao 512 Apr 23 09:49 ../

-rw-rw-rw- 1 kcao kcao 0 Apr 23 12:17 SRR001_R1.fq

-rw-rw-rw- 1 kcao kcao 0 Apr 23 12:17 SRR001_R2.fq

-rw-rw-rw- 1 kcao kcao 0 Apr 23 12:17 SRR002_R1.fq

-rw-rw-rw- 1 kcao kcao 0 Apr 23 12:17 SRR002_R2.fq

-rw-rw-rw- 1 kcao kcao 0 Apr 23 12:17 SRR003_R1.fq

-rw-rw-rw- 1 kcao kcao 0 Apr 23 12:17 SRR003_R2.fq

## 文件名对应关系

kcao@DESKTOP-95JHONS:~/TMP_dir$ cat >match.tsv

SRR001 Test1

SRR002 Test2

SRR003 Ctrl1

方法1:linux 解决

ls *fq | while read id;do A=${id%_*};B=`grep $A match.tsv |awk '{print $2}' `;mv $id ${id/$A/$B};done

效果

9bab45b846ad

2020年4月23日15:13:11

方法2:R

## Step1: 读取映射关系

> dat

> dict

> names(dict)

> dict

SRR001 SRR002 SRR003

Test1 Test2 Ctrl1

Levels: Ctrl1 Test1 Test2

## Step2:使用file.name 进行修改名称

> old.file.names

> new.file.names

# 新的命名规则,下例为所有文件统一加后缀,本部分可根据具体情况修改(修改这里)

new

return(new)

})

# 执行批量命名操作

file.rename(old.file.names,new.file.names)

思考:

尝试使用linux 数组来搞,发现ARR数组为空,为什么?.....

# linux 数组,

# ARR=();cat match.tsv |while read id;do tmp=($id);A=${tmp[0]};B=${tmp[1]};ARR[$A]=$B;echo $A,$B;done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值