内容に応じてテキストファイルの名前を変更する

内容に応じてテキストファイルの名前を変更する

モデル入力のために変更する必要があるポイントファイルがたくさんあります。内容に応じて多くのファイルの名前を変更したいと思います。これは一行に並べられたテキストファイルです。

ファイル名:data_lat_long.txt

1 data_20_20
2 data_30_40
3 data_50_60
.
.

など。

私のファイル名は1、、2などです34

で、からで、など1に変更したいと思います。data_20_202data_30_40

答え1

while read line ; do 
    mv $line 
done < data_lat_long.txt

ファイルの各行を読み取り、各行をという変数に割り当てるループdata_lat_long.txtにファイルの内容をリダイレクトします。次に、内容を引数として使用します(これはファイルに指定した先頭と終了です)。ファイルが終了するまで繰り返します。whileread$linemv$linedata_lat_long.txt

これは、ファイル名にdata_lat_long.txtスペースが含まれていないことを暗黙的に予測します(したがって、2つの列しかありません)。

ファイルにスペースが含まれている場合は、ファイルにカンマ区切り文字を使用することをお勧めします。

1,space file1
2,space file2
3,space file3

次に、次を使用します。

while IFS=',' read -a files 
do 
   mv "${files[0]}" "${files[1]}" 
done < list.txt

これは(この場合はカンマ)で区切られたテキストを名前付き配列に割り当てるオプションを利用します-a。次に、個々の要素をインデックス化し、パラメータを二重引用符で囲みます。これにより、コマンドの実行時に配列値が拡張されます。readIFS$filesmv""mvそしてしたがって、ファイルのスペースはパラメータ区切り文字として扱われませんmvmv 1 space file1のようなことはしませんmv "1" "space file1"。前のコマンドは、1という名前のファイル/ディレクトリを名前のspaceディレクトリに移動しようとしましたfile1

関連情報