Thank you so much for your help!! It was really clever!!
I don't have a lot of experience with bash, but I am on it.
Thanks!
Hi, community! I want to transform BED to VCF files, but I will use echo to simplify the example. For that, I have two folders to access my BED files.
directory A: /home/caroca/strains/
folders: SRR800856 SRR800857 SRR800858
directory B: /home/caroca/strains/strain/results/
files for 1 folder: SRR800856_ngs_nonredundant.bed SRR800856_rel_nonredundant.bed
This is my code:
for i in SRR*; do
cd /home/caroca/strains/$i/results ;
for file in /home/caroca/strains/$i/results/$i_*_.nonredundant.bed ; do
echo $file ;
done ;
done
This is the stdout:
/home/caroca/strains/SRR800856/results/*_.nonredundant.bed
/home/caroca/strains/SRR800857/results/*_.nonredundant.bed
/home/caroca/strains/SRR800858/results/*_.nonredundant.bed
As you can see, the "*" should not stay there, instead it should be (the files of each folder):
/home/caroca/strains/SRR800856/results/SRR800856_ngs_nonredundant.bed
/home/caroca/strains/SRR800856/results/SRR800856_rel_nonredundant.bed
I tried multiple combinations and I don't know how to tackle it. Thank you in advance!
1 answer
What about this:
for i in /home/caroca/strains/SRR*; do for f in $i/results/*nonredundant.bed; do echo $f; done; done
also you can have the same result in one loop:
for f in /home/caroca/strains/SRR*/results/*nonredundant.bed; do echo $f; done;
$ for f in /home/caroca/strains/SRR*/results/*nonredundant.bed; do echo $f; done;
is this equivalent to
$ find /home/caroca/strains/SRR* -type f -name "*nonredundant.bed" ?
yes, but only for printing the name files. Caro-ca generalized the example. In fact, he wants to apply a conversion from bed to vcf. Thence, he will replace echo with something else.
Of course he can use find command and then xargs to do the same thing. But maybe it is better for him to have one step at a time
Log in to answer this question.
Hi,
Not sure if the error is related, but can you try this:
I think you need to add
{}because_might be a special character: ${i}.António
Thank you for your reply. Although this is what I got:
I think you need to spend some time understanding
bashwildcards andparameter expansion.I would also suggest using
findwith its-execflag for this instead.Thank you! I don't have a lot of experience with bash but I will pay a close look at that. Thanks