我试图编写一个循环以将文件组织到数据存储服务器上的单独文件夹中。
我有一个想法,但无法实现。
DATA_DIR=/data/user/alingment
OUTDIR=/data/user/reorganised
#reorganise files
numbers=list(range(1,67))
for number in `ls numbers`
do
mv $DATA_DIR/NG-.{9}BS[$number]\..*\.bam$ $OUTDIR/sample[$number]
done
为了给您一个文件名的例子,我在下面列出了几个。
NG-5353_STD.BS54.HWI-ST486_0066_6.Lane_3.read_2_aligned.bam
NG-5353_STD.BS54.HWI-ST486_0066_6.Lane_3.read_2_aligned.bam.bai
NG-5353_STD.BS57.UnknownInstrumentName_11.Lane_5.read_2_aligned.bam
NG-5353_STD.BS57.UnknownInstrumentName_11.Lane_5.read_2_aligned.bam.bai
我只想创建.bam文件,并且想根据标识符BS(ID号)进行组织,因此要列出编号。
我对此很陌生,因此将不胜感激。
谢谢。
最终,我设法弄清楚了。 对于任何有类似问题的人,我最终都使用了两个循环和一个if语句。 见下文:
DATA_DIR=/data/01aligned_files/BAM_Files
OUTDIR=/data/03merge_by_sample/input
#reorganise files
for file in $DATA_DIR/*.bam
do
for i in {1..66..1}
do
REGEX_FILE="NG-.{9}BS"$i"b?\..*"
echo $REGEX_FILE
if [[ "$file" =~ $REGEX_FILE ]]; then mv $file $OUTDIR/BS$i; fi
done
echo $file
done