Я (очень четко) не знаю Баш.Если это излишний вопрос, я буду признателен за указание в правильном направлении - извинения, если я не нашел подходящей темы.Спасибо, как всегда.
У меня есть файловая структура следующим образом:
/quants
sample1
a bunch of extra stuff
aux_info
unmapped_names.txt
sample2
a bunch of extra stuff
aux_info
unmapped_names.txt
sample3
a bunch of extra stuff
aux_info
unmapped_names.txt
в каждом примере подкаталогов, есть больше каталогов и файлов, чем только aux_info и unmapped_names.txt, но онивот те, которые я заинтересован в копировании.
Приведенный ниже метод создает новый каталог без отображения внутри / quants.В результате получается следующее:
/quants
sample1
a bunch of extra stuff
aux_info
unmapped_names.txt
sample2
a bunch of extra stuff
aux_info
unmapped_names.txt
sample3
a bunch of extra stuff
aux_info
unmapped_names.txt
unmapped
sample1
unmapped_names.txt
sample2
unmapped_names.txt
sample3
unmapped_names.txt
Код ниже работает, но он очень медленный.Буду признателен за предложения о том, как сделать это более эффективно.
getUnmapped(){
# =====================================================================
# description: create new dir called unmapped
# input: quant filepath (output from mapSalmon)
# output:
# =====================================================================
# enable glob (for mac)
shopt -s extglob
# store original workingDir
local workingDir=$(pwd)
# store list of all directories (sample_rep names) in quant dir
local sample_dirs=$1/*
# cd to inputted quants dir
cd $1
# create directory in quants dir called unmappped
mkdir unmapped
cd unmapped
# create sample_rep directories in unmapped
for sample_rep in $sample_dirs;
do
if [ $(basename ${sample_rep%_quant}) != "unmapped" ]
then
local sample_file=$(basename ${sample_rep%_quant})
mkdir $sample_file
cp $sample_rep/aux_info/unmapped_names.txt ${1}/unmapped/${sample_file}
fi
done
cd $workingDir
} # end getUnmapped