将文件批量组织到文件夹中

问题描述 投票:0回答:1

我试图编写一个循环以将文件组织到数据存储服务器上的单独文件夹中。

我有一个想法,但无法实现。

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号)进行组织,因此要列出编号。

我对此很陌生,因此将不胜感激。

谢谢。

unix file-transfer
1个回答
0
投票

最终,我设法弄清楚了。 对于任何有类似问题的人,我最终都使用了两个循环和一个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
© www.soinside.com 2019 - 2024. All rights reserved.