以下に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
大丈夫に見える場合は、エコーを削除してください。
ファイル名のスペースやファイル名の引用符のエラーチェックは行われません。