удар по команде - PullRequest
       1

удар по команде

1 голос
/ 14 августа 2011
#!/bin/bash

for i in /home/xxx/sge_jobs_output/split_rCEU_results/*.rCEU.bed
do
intersectBed -a /home/xxx/sge_jobs_output/split_rCEU_results/$i.rCEU.bed -b /home/xxx/sge_jobs_output/split_NA12878_results/$i.NA12878.bed -f 0.90 -r > $i.overlap_90.bed
done

Однако я получил такие ошибки, как:

Error: can't determine file type of '/home/xug/sge_jobs_output/split_NA12878_results//home/xug/sge_jobs_output/split_rCEU_results/chr4.rCEU.bed.NA12878.bed': No such file or directory

Кажется, что компьютер смешивает два .bed файла вместе, и я не знаю почему. ТНХ

1 Ответ

4 голосов
/ 14 августа 2011

Ваш i имеет формат /home/xxx/sge_jobs_output/split_rCEU_results/whatever.rCEU.bed, и вы вставляете его в имя файла, что приводит к дублированию. Наверное, проще всего перейти в каталог и использовать basename, например:

pushd /home/xxx/sge_jobs_output/split_rCEU_results
for i in *.rCEU.bed
do
    intersectBed -a $i -b ../../sge_jobs_output/split_NA12878_results/`basename $i .rCEU.bed`.NA12878.bed -f 0.90 -r > `basename $i .NA12878.bed`.overlap_90.bed
done
popd

Обратите внимание на использование basename, с помощью которого вы можете заменить расширение файла: если у вас есть файл с именем filename.foo.bar, basename filename.foo.bar .foo.bar возвращает просто filename.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...