根據新舊檔名一一對應的表格批量迴圈修改檔名
阿新 • • 發佈:2020-12-11
Linux根據新舊檔名一一對應的表格批量迴圈修改檔名
從TCGA上下載的
①sample sheet檔案包含file name,file ID 和對應sample type
②gdc download檔案含有counts和FPKM的兩個檔案
③clinical檔案:含有case submitter id和一些臨床資料。這裡的case id和file id不同
根據gdc download檔案中manifest檔案中的file ID(如0096f6b3-94f5-49d9-aa43-66d9ab6b2b5c),去sample sheet中查詢該ID對應的sample ID(如TCGA-AA-3979-01A),將以file ID命名的一千多個檔案全部轉換成對應的以sample ID命名的檔案。
用shell寫迴圈:檔案重新命名
思路
①將檔名作為可以被awk使用的變數,這裡用了選項-v
②如果sample sheet表格中存在與舊檔名相同的,將其對應的新檔名輸出為外界變數。這裡用了eval命令(會首先完成命令列所有的賦值替換,然後再執行命令列)。
③mv命令完成重新命名
圖片:
程式碼
#!/bin/bash
for file in `ls | grep .counts`
do
eval $(awk -v FILENAME="$file" -F"\t" '{if($2==FILENAME)printf("newfilename=%s\n" ,$7) }' ./tryname.tsv)
mv $file $newfilename
done