问题:
我有多个文件,如下所示:
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
以实际进行移动。