Пакетная организация файлов в папки
Я пытаюсь написать цикл для организации моих файлов в отдельные папки на сервере хранения данных.
Идея, которая у меня была, но я не могу воплотить в жизнь, следует;
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(идентификационный номер), отсюда и список номеров.
Я очень новичок в этом, поэтому любая помощь будет принята с благодарностью.
Спасибо.
1 ответ
В конце концов мне удалось понять это. Для тех, у кого была похожая проблема, я использовал два цикла и оператор 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