1. 程式人生 > 其它 >根據新舊檔名一一對應的表格批量迴圈修改檔名

根據新舊檔名一一對應的表格批量迴圈修改檔名

技術標籤:shelllinux

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