Я пытаюсь выполнить цикл bash, чтобы запустить простой процесс для всех файлов с расширением .sam, которые можно найти в каталоге и его подкаталогах, и использовать то же имя (расширение exc) для вывода, что и для ввода. , при этом выходные данные направляются в ту же папку, в которой были найдены входные данные.
Я получил следующее:
for file in $(find ~/data/finch_data/combruns_BF_genomes -name "*.sam" -type f); do
name="${file%.sam}"
dir=$(pwd $file)
samtools view -Sb "$dir"/"$name".sam > "$dir"/"$name".bam
done
но я получаю это сообщение:
...
>bash:/home/madzays/qsub//home/madzays/data/finch_data/combruns_ZF_transcriptomes/ZBND81X_gff/filteredfirstZBND81X_gff.bam: No such file or directory
>bash:/home/madzays/qsub//home/madzays/data/finch_data/combruns_ZF_transcriptomes/ZBND81X_gff/filteredsecZBND81X_gff.bam: No such file or directory
>bash:/home/madzays/qsub//home/madzays/data/finch_data/combruns_ZF_transcriptomes/ZBND82V_gff/filteredfirstZBND82V_gff.bam: No such file or directory
...
Что может быть не так? спасибо
Проверьте путь, он дважды включает
/home/madzays/
, что должно быть неверным.dir=$(pwd)
not dir=$(pwd $file), но здесь проблема не в этомЯ предлагаю:
samtools view -Sb "$name.sam" > ...
(без $dir)Да, это сработало. Но почему? Я думал, что find возвращает только имя файла, а он возвращает весь путь, вплоть до имени файла!