Recorra todos los archivos paired1.fq
y, para cada archivo, use el nombre para calcular el nombre del archivo paired2.fq
correspondiente. Luego llame a su programa con estos:
for paired1 in data/*paired1.fq; do
paired2="${paired1%1.fq}2.fq" # remove 1.fq from end of name and replace with 2.fq
if [ ! -f "$paired2" ]; then
printf 'Missing file:\t%s\n' "$paired2" >&2
continue
fi
prefix="${paired1%_*}" # remove last underscore and everything after
prefix="${prefix##*/}" # remove directory name from prefix
# If $paired1 is the string "data/24538_7#1_paired1.fq", then
# $prefix should now be "24538_7#1"
mkdir -p "results/STAR/$prefix"
STAR --runThreadN 12 --genomeDir indices/STAR --twopassMode Basic \
--readFilesIn "$paired1" "$paired2" \
--outFileNamePrefix "results/STAR/$prefix/"
done
Как упоминалось в Почему при сортировке ls игнорируются не буквенно-цифровые символы? , сортировка по умолчанию - UTF8, а UTF8 учитывает +/- эквивалент .
Установив LC_COLLATE = C
для сортировки, вы можете получить порядок сортировки ascii:
curl -s https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org/message/ZN6VMFN65JWV7NMG2XEHPUI2AGSLRNGW/attachment/2/0001-LDAP-Change-the-default-rfc2307-autofs-attribute-map.patch | \
grep '^[+-] *{ "' | LC_COLLATE=C sort