命令行 - 如何將多個文件移動到同名的文件夾

分享于 

3分钟阅读

ubuntu

  简体

问题:

我有多个文件,如下所示:


round3-bcF_01_bcR_01.R1.fastq


round3-bcF_01_bcR_01.R2.fastq


round4-bcF_01_bcR_01.R1.fastq


round4-bcF_01_bcR_01.R2.fastq


round3-bcF_01_bcR_02.R1.fastq


round3-bcF_01_bcR_02.R2.fastq


round4-bcF_01_bcR_02.R1.fastq


round4-bcF_01_bcR_02.R2.fastq




round3-bcF_12_bcR_08.R1.fastq


round3-bcF_12_bcR_08.R2.fastq



另外,我有不同的文件夹,如下所示:


bcF_01_bcR_01


bcF_01_bcR_02


bcF_01_bcR_03 



直到

 
bcF_12_bcR_08



我移动文件:


mv *-bcF_01_bcR_01* bcF_01_bcR_01 




答案1:

最简单的方法是以如下方式使用内置的for循环:


for i in {01..08}; do echo mv *-bcF_01_bcR_${i}* bcF_01_bcR_${i}/; done 



  • 删除echo命令以进行实际的文件系统更改

答案2:

使用rename移动文件:


$ rename -n 's/.*(bcF_[0-9]+_bcR_[0-9]+).*/$1/$&/' *.fastq



准备好移动文件时删除-n。


答案3

mmv (从同名软件包中)在以下情况下很有用:


$ mmv -n '*-bcF_01_bcR_*.*' 'bcF_01_bcR_#2/'


round3-bcF_01_bcR_01.R1.fastq -> bcF_01_bcR_01/round3-bcF_01_bcR_01.R1.fastq


round3-bcF_01_bcR_01.R2.fastq -> bcF_01_bcR_01/round3-bcF_01_bcR_01.R2.fastq


round3-bcF_01_bcR_02.R1.fastq -> bcF_01_bcR_02/round3-bcF_01_bcR_02.R1.fastq


round3-bcF_01_bcR_02.R2.fastq -> bcF_01_bcR_02/round3-bcF_01_bcR_02.R2.fastq


round4-bcF_01_bcR_01.R1.fastq -> bcF_01_bcR_01/round4-bcF_01_bcR_01.R1.fastq


round4-bcF_01_bcR_01.R2.fastq -> bcF_01_bcR_01/round4-bcF_01_bcR_01.R2.fastq


round4-bcF_01_bcR_02.R1.fastq -> bcF_01_bcR_02/round4-bcF_01_bcR_02.R1.fastq


round4-bcF_01_bcR_02.R2.fastq -> bcF_01_bcR_02/round4-bcF_01_bcR_02.R2.fastq




mmv -n '*-bcF_*_bcR_*.*' 'bcF_#2_bcR_#3/'



移除-n以实际进行移动。



COM  文件  COMM  files  Comma  命令行