# How I move these files based on their names in R or terminal

EDITED

I have list of my samples in first column and corresponding file name for my .vcf files in second column of a file name clin_name.txt like below. For example name of one vcf is LP6008031-DNA_A04_vs_LP6008032-DNA_D03.snp.pass.vcf

OC/AH/120/E/T3  LP6005409-DNA_F01
OC/AH/126/E/T1  LP2000325-DNA_A01
OC/AH/136/E/T3  LP6005409-DNA_E02


This is the link of my file https://www.dropbox.com/s/mvzf47feiqe7x69/clin_name.txt.txt?dl=0

In the second file name pre_post.list I have information of pre or post treatment for each sample like this

pre-treated post-treated
OC/AH/120   OC/AH/065
OC/AH/126   OC/AH/069
OC/AH/136   OC/AH/074
OC/AH/160   OC/AH/084


This is link of this https://www.dropbox.com/s/ikrl1h8yoc0sngx/pre_post.list.xlsx?dl=0

As you suggested I typed

cat pre_post.list | awk '{print $$2}' | sed 's@.*/@@' > post_list.txt cat pre_post.list | awk '{print$$1}' | sed 's@.*/@@'  > pre_list.txt


Then I have

pre-treated
120
126
136
160
182

post-treated
065
069
074
084


in I typed ./test.sh in which I wrote

for item in  $$(cat pre_list.txt | grep -Eo '[0-9]{1,4}'); do if grep -q$$item clin_name.txt ;
then out=$$(grep$$item clin_name.txt | awk  '{print $$1}'); cp *$$out* /temp/hgig/fi1d18/TRG45/snp/
else echo post_list $item; fi; done;  That returns cp: cannot stat *OC/AH/069/S/T3*': No such file or directory [fi1d18@cyan01 snp]$


Or I run

for item in  $$(cat post_list.txt | grep -Eo '[0-9]{1,4}'); do if grep -q$$item clin_name.txt ;
then out=$$(grep$$item clin_name.txt | awk  '{print $$1}'); cp *$$out* /temp/hgig/fi1d18/TRG45/snp/pre/
else cp *$out* /temp/hgig/fi1d18/TRG45/snp/post/; fi; done;  That returns cp: cannot stat OC/ST/026/S/T1*': No such file or directory [fi1d18@cyan01 snp]$


I really don't know how to solve this :(

• This is more of a job for snakemake or similar. You'd end up following the same logic in R if you really prefer that. Show us what you've tried so far, since there's no reason someone should write a custom program for you. – Devon Ryan Nov 12 '19 at 12:30

## 1 Answer

Assuming the names of all the files from one group are in file named list.

cat pre_post.list | awk '{print $$2}' | sed 's@.*/@@' > post_list.txt cat pre_post.list | awk '{print$$1}' | sed 's@.*/@@'  > pre_list.txt


Now you have two number list

    for item in  $$(cat pre_list.txt | grep -Eo '[0-9]{1,4}'); do if grep -q$$item clin_name.txt ;
then out=$$(grep$$item clin_name.txt | awk  '{print $$1}'); cp *$$out* /dir/for_pre_files/
else echo post_list $item; fi; done  for post  for item in $$(cat post_list.txt | grep -Eo '[0-9]{1,4}'); do if grep -q$$item clin_name.txt ; then out=$$(grep$$item clin_name.txt | awk '{print $$1}'); cp *$$out* /dir/for_post_file/ else echo Prelist$item;  fi;  done


or you could do this if one that isn't in post belongs in pre

    for item in  $$(cat post_list.txt | grep -Eo '[0-9]{1,4}'); do if grep -q$$item clin_name.txt ;
then out=$$(grep$$item clin_name.txt | awk  '{print $$1}'); cp *$$out* /dir/for_post_file/
else cp *$out* /dir/for_pre_file/; fi; done  • Sorry I tried your kindly code but did not work and I got this error in very early stage [fi1d18@cyan01 ~]$ cat pre_post.list | awk '{print \$2}' | sed 's@.*/@@' > post_list.txt cat: pre_post.list: No such file or directory – Exhausted Nov 18 '19 at 11:11
• You have to change the names in my bash code to reflect the names of the actual files on my computer – Michael Hearn Nov 18 '19 at 14:23
• Thank you I am getting this the for loop grep: clin_name.txt: No such file or directory post_list 069 this being repeated for all of samples – Exhausted Nov 22 '19 at 17:01
• You need to replace all the file names in the script with your file names. – Michael Hearn Nov 22 '19 at 17:04
• file that contains all OC/AH/120/E/T3 LP6005409-DNA_F01 OC/AH/126/E/T1 LP2000325-DNA_A01 OC/AH/136/E/T3 LP6005409-DNA_E02 – Michael Hearn Dec 4 '19 at 16:51