情報ファイルでbashのファイル名を変更する

情報ファイルでbashのファイル名を変更する

以下に4つのファイルがあるディレクトリがあります。

ERR315336_1.fastq.gz  ERR315336_2.fastq.gz  ERR315337_1.fastq.gz  ERR315337_2.fastq.gz

また、info.txtというsepファイルに、この4つのファイルに関する情報ファイルを提供しました。

placenta_6c      placenta_6c_ERR315336_1.fastq.gz    ERR315336_1.fastq.gz
placenta_6c      placenta_6c_ERR315336_2.fastq.gz    ERR315336_2.fastq.gz
thyroid_5b   thyroid_5b_ERR315337_1.fastq.gz     ERR315337_1.fastq.gz
thyroid_5b   thyroid_5b_ERR315337_2.fastq.gz     ERR315337_2.fastq.gz

info.txtファイルでディレクトリ内のファイルの名前を変更したいと思います。したがって、名前を変更した後、私のディレクトリは次のようになります。

 placenta_6c_ERR315336_1.fastq.gz 
 placenta_6c_ERR315336_2.fastq.gz 
 thyroid_5b_ERR315337_1.fastq.gz 
 thyroid_5b_ERR315337_2.fastq.gz

だから基本的にERR315336_1.fastq.gz to placenta_6c_ERR315336_1.fastq.gz お待ちください。私は巨大な情報リストファイルを持っています。どうすればいいですか?

ありがとう

ベストアンサー1

不器用に:

cd directory-with-files
awk '{system("echo mv " $3 " " $2)}' < /path/to/info.txt

bash-edly:

cd directory-with-files
while read -r junk new old
do
  echo mv "$old" "$new"
done < /path/to/info.txt

大丈夫に見える場合は、エコーを削除してください。

ファイル名のスペースやファイル名の引用符のエラーチェックは行われません。

おすすめ記事