2つの列を持つテキストファイルがあります。 1つの列は現在のファイル名を表し、もう1つの列はファイルの最後の名前として必要な名前を表します。テキストファイルは次のとおりです。
JALAZR010000001.1 - CM040670.1
JALBAP010000001.1 - CM040694.1
JALBBH010000001.1 - CM040712.1
JALBAZ010000001.1 - CM040704.1
JALBBR010000001.1 - CM040722.1
JALBBU010000001.1 - CM040725.1
JALAZL010000001.1 - CM040664.1
JALBAE010000001.1 - CM040680.1
ファイルは次の場所にあります。
Genomic_data/Mito/CDS/Fungi/JALAZR010000001.1.gb
私は同様のことを試しました:
awk -F" - " '{print $1, $2}' filename.txt | mv Genomic_data/Mito/CDS/Fungi/{$1}.gb Genomic_data/Mito/CDS/Fungi/{$2}.gb
しかし、私は経験豊富なbashプログラマではないので、2つのawk出力をmvプログラムにパイプする方法についてのアドバイスをいただきありがとうございます(一度はできませんでした)。予想される出力は次のようになります。
Genomic_data/Mito/CDS/Fungi/CM040670.1.gb
時間をいただきありがとうございます。
PS - 他の代替例も良いでしょう。
ベストアンサー1
提案したフレーズに近いものを使用できますGNUパラレルawkの代わりに、例えば
$ parallel --colsep ' - ' echo mv -n -- Genomic_data/Mito/CDS/Fungi/{1}.gb Genomic_data/Mito/CDS/Fungi/{2}.gb :::: filename.txt
mv -n -- Genomic_data/Mito/CDS/Fungi/JALAZR010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040670.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALBAP010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040694.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALBBH010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040712.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALBAZ010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040704.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALBBR010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040722.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALBBU010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040725.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALAZL010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040664.1.gb
mv -n -- Genomic_data/Mito/CDS/Fungi/JALBAE010000001.1.gb Genomic_data/Mito/CDS/Fungi/CM040680.1.gb
echo
正しいことをしていると確信している場合は、削除してください。