由于我没有rename
,我想使用sed
修改192个文件名。具体来说,我想删除文件扩展名前的最后5个字符;第一个字符是_
,另外4个是随机字母数字字符串,字母为小字或大字。现在文件名的示例:
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_mimus_CMF_0110_S42_L005_R1_001_prinseq_good_30Nd.fastq
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_mimus_CMF_0110_S42_L005_R2_001_prinseq_good_GyUj.fastq
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_suturellus_CMF_0305_S71_L005_R1_001_prinseq_good_M99E.fastq
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_suturellus_CMF_0305_S71_L005_R2_001_prinseq_good_HZrr.fastq
Rhopalidae_Rhopalinae_Harmostini_Harmostes_sp_CMF_0401_S87_L005_R1_001_prinseq_good_96CG.fastq
Rhopalidae_Rhopalinae_Harmostini_Harmostes_sp_CMF_0401_S87_L005_R2_001_prinseq_good_stNk.fastq
我想用sed
脚本做什么:
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_mimus_CMF_0110_S42_L005_R1_001_prinseq_good.fastq
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_mimus_CMF_0110_S42_L005_R2_001_prinseq_good.fastq
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_suturellus_CMF_0305_S71_L005_R1_001_prinseq_good.fastq
Pyrrhocoridae_Pyrrhocorinae_Pyrrhocorini_Dysdercus_suturellus_CMF_0305_S71_L005_R2_001_prinseq_good.fastq
Rhopalidae_Rhopalinae_Harmostini_Harmostes_sp_CMF_0401_S87_L005_R1_001_prinseq_good.fastq
Rhopalidae_Rhopalinae_Harmostini_Harmostes_sp_CMF_0401_S87_L005_R2_001_prinseq_good.fastq
我已经尝试sed -r 's/good_(.)+.fastq/good.fastq/'
但似乎没有任何事情发生。
答案 0 :(得分:0)
如果您使用的是Mac,请在此处查看可用的命令:
如果您在此页面中进行重命名,则会出现mv
作为移动或重命名文件的方式。
它与Windows不同,它更像是命令行中的Linux,这意味着你可以用它做更多的事情。
答案 1 :(得分:0)
你的sed表达
sed -r 's/good_.+.fastq/good.fastq/'
适合我。要么是你的调用错误,要么是你的MacOS sed和我的Linux-Gnu-sed的差异。
但是,由于你没有抓取字符,匹配(。)+,你不需要大括号:
sed -r 's/good_(.)+.fastq/good.fastq/' files > files2
应该足够了,但可以缩小到......
第一个字符是_,另外4个是随机字母数字 带有小字或大字母字母的字符串。
我将您的输入粘贴到文件“文件”中,然后尝试
for f in *.fastq
do
newname=$(echo "$f" | sed ...)
mv "$f" "$newname"
done
将您想要的输出粘贴到files3,并且差异没有显示出差异。你得到了什么?你怎么援引它?
为了移动文件,我想像是
sed --posix 's/good_.*.fastq/good.fastq/' files
可能是一个调用错误。
当我启用--posix样式时,我需要替换。+ with。* - 也许就是这样。
If fo = False Then
Set wb = Workbooks.Open(filename:=cf)
Else
Dim w As Workbook
For Each w In Workbooks
If w.FullName = cf Then
Set wb = w
End If
Next
End If
仅值得提示:。*。fastq中的第二个点将匹配所有字符,幸运的是包括点本身。用反斜杠掩盖它可以防止误解。
答案 2 :(得分:0)
这是你实际上不需要sed的,只是正常的bash:
for f in *.fastq; do
mv "$f" "${f%_*.fastq}.fastq"
done
应该可以正常工作。
答案 3 :(得分:0)
似乎我的mv
命令正在运行,但由于某些原因我的查找器没有更新。