Thanks for the reply. However, I have the two files in dir1 which I want to compare. file1 ad file2 are in the same folder. Then I don't think this will work for my case. But it provided a solution. I will try to work more on it.
Hello,
I want to use bedtools intersect to compare multiple pairs of files. For example, I have folder1, and file1 and file2 in it and then folder2, file3 and file4 in it etc. I want to find a way that do all these comparison in a loop or with pipe '|' .
I know how to do this with one pair , like bedtools intesect -a file1 -b file2. Then how can I do this if I have 90 pairs of files and they are all different samples?
If I want to use ls | xargs bedtools intersect , it is still won't work. or how can I tell each -a -b position the correct standard input or argument from previous one?
I hope I stated my questions clearly enough and appreciate any idea. Thanks.
1 answer
You can use bash for loops. The syntax is:
for f1 in $(ls dir1/); do for f2 in $(ls dir2/); do bedtools intersect -a $f1 -b $f2 ; done ; done
You'll to do some work to set the output file names though
You can put any bash command in the $() so you can ls certain files, grep or do whatever you like.
The best choice, however, is to take the time and implement it as a nextflow or snakemake pipeline, future you will thank you when you'll have to repeat it in the future because you found a small bug, changed the input files or just wanted to publish a reproducible analysis.
Log in to answer this question.