Moving file based on their names I have a list of vcf files; I also have a list of names in a txt file like

LP6005409-DNA_F01
LP2000325-DNA_A01
LP6005409-DNA_E02
LP6005500-DNA_C03


What I have in this txt files are part of name of each vcf files

I want to move .vcf files having these in their name to a separate folder

I done

[fi1d18@cyan01 TRG]$ for i in *.vcf
&gt; do if grep -q $i 1.txt;
&gt; cp *$out* /temp/hgig/fi1d18/TRG45/snp/snp/TRG/pre/
&gt; done
-bash: syntax error near unexpected token `done'
[fi1d18@cyan01 TRG]$


How I can complete this task?

Thank you
First of all you are getting an error because you are missing a then in the third line of your code and then a fi to close the if. It should be:

for i in *.vcf
do if grep -q $i 1.txt; then
    cp *$out* /temp/hgig/fi1d18/TRG45/snp/snp/TRG/pre/
fi
done


And I guess the one-liner below achieves what you are trying to do:

while IFS= read -r line; do mv "$line"*.vcf some-directory; done &lt; file-list.txt