gnu parallel for macs peak calling These are the list of files 

Control_Input_sorted.bam_rem.bam  
Control_H2BUb_sorted.bam_rem.bam  
Control_IgG_sorted.bam_rem.bam 
PTPN6_g2_6_H2Bub_sorted.bam_rem.bam  
PTPN6_g2_6_Input_sorted.bam_rem.bam


So to get unique files i do this

 ls -1 *bam | sort | sed -r 's/_sorted.bam_rem.bam//g' | sort | uniq 
Control_Input
Control_H2BUb
Control_IgG
PTPN6_g2_6_H2Bub
PTPN6_g2_6_Input


Now i have to run each sample against input and IgG for peak-calling.
Like  Control_H2BUb_sorted.bam_rem.bam against 

Contol_Input_sorted.bam_rem.bam &amp; Control_IgG_sorted.bam_rem.bam and 


PTPN6_g2_6_H2Bub_sorted.bam_rem.bam against PTPN6_g2_6_Input_sorted.bam_rem.bam


So how do I parse and execute using gnu parallel.

I came across this tutorial where it does something like this

cat sample_names.txt | parallel --max-procs=12 'macs2 callpeak -t {}-A-NC.sorted.bam \
 -c {}-G-NC.sorted.bam -g hs -n {}-A-NC-sharp-model -q 0.01 --outdir {}-A-NC-sharp-model-peaks 2&gt; {}-A-NC-sharp-model.stderr'


Now im not sure how to pass the file names as argument for IP and Input or IgG.

If i use logic a little bit i have to fix Control and PTPN6_g2_6 as constant naming!.

Any suggestion or help would be really appreciated.
not gnuparallel but nextflow. I don't know macs and what is 'first.bam' and 'second.bam' is not clear not me but I hope you'll get the idea.

The nextflow:

Channel.fromPath(params.bams).splitCsv(header: false,sep:'\t',strip:true).map{T-&gt;file(T[0])}.into{bams1;bams2}

boolean isControl(file) {
    return file.name.endsWith("_Input_sorted.bam_rem.bam") || file.name.endsWith("_IgG_sorted.bam_rem.bam ");
    }

bams1.filter{T-&gt;isControl(T)}.set{controls}
bams2.filter{T-&gt;!isControl(T)}.set{experiment}

process mac {
    maxForks 14
    tag "${bam1} vs ${bam2}"
    input:
        set bam1 , bam2  from experiment.combine(controls)
    output:
        file("output.peaks") into mac_peak
    script:
    """
    # check syntax please
    macs2 callpeak -t {bam1.toRealPath()}  -c ${bam2.toRealPath()} -g hs -n out-model -q 0.01 --outdir output.peaks
    """
    }     


invoke:

find /dir1/dir2 -type f -name "*.bam" &gt; input.list

nextflow run --bams input.list workflow.nf