如何根据文件名中的模式复制目录中的部分但不是全部文件?

如何根据文件名中的模式复制目录中的部分但不是全部文件?

我有一长串根据以下模式命名的文件:

S901_S1_fastq.gz
S902_S2_fastq.gz
S903_S3_fastq.gz
S904_S4_fastq.gz
etc.

因为这些文件对应于不同的实验处理,所以我想将它们分成每个处理的目录。有没有办法移动说编号为 300 的文件 S905_S5_fasta.gz。 。 。S1205_S305_fasta.gz进入新目录?

我尝试使用for下面的循环来执行此操作,但它没有起作用:

for i in 'seq 905 1205'; do
  scp S${i}* Target_directory
done

该循环的结果如下:

cp: cannot stat 'Sseq': No such file or directory
cp: cannot stat '905': No such file or directory
cp: cannot stat '1205*': No such file or directory

任何帮助,将不胜感激!

答案1

如果您使用的是诸如bash支持大括号扩展的 shell,您可以直接枚举文件:

# S905_S5_fasta.gz to S1205_S305_fasta.gz
mkdir new_directory
mv S{905..1205}_* new_directory

相关内容