代替ファイル名を含むテキストファイルを使用してファイル名を変更するスクリプト

代替ファイル名を含むテキストファイルを使用してファイル名を変更するスクリプト

何千ものファイルを含むフォルダがあります。

file1.jpeg
file2.jpeg
file3.jpeg

など。

置き換えたい新しいファイル名のリストを含むテキストファイルがあります。

old_filename     new_filename
file3.jpeg       my_dog.jpeg
file1.jpeg       my_cat.jpeg
file2.jpeg       my_goat.jpeg

など。

フォルダ内のすべてのファイルの名前を新しいファイル名に変更するか、新しい名前を元のファイル名のプレフィックスとして追加するスクリプトを探しています。

フォルダを検索し、名前をテキストファイルと比較し、それに応じてファイル名を変更するには何かが必要です。

リストとファイルはどのような方法でもソートされません。

答え1

これを試す前に、まずバックアップがあることを確認してください。

幸いなことに、あなたの例には古い名前と新しい名前にスペースがなく、サブディレクトリへの言及もありません(すべて同じディレクトリにあります)。したがって、リストのすべての行は次のようになります。

  1. 画像とrename_rules.txt同じディレクトリに
  2. cdでディレクトリに入ります
  3. ランニング:

     eval "$(sed 's/^/mv /g' rename_rules.txt )"
    
    • 各行にはrename_rules.txtペアのみが含まれます。oldname newname
    • sedrename_rulesあなたを次に変換するために使用されました。mv oldname newname
    • evalその後、これを実行するために使用されるため、ファイル名が変更されます。

oldname newname免責事項:この単純な短いスクリプトには、検証やファイルチェックはまったく組み込まれていません。したがって、名前の変更のペアの1つにエラーがある場合に備えて、最初にすべきことはバックアップがあることを確認することです。少なくともバックアップから始めることができます

関連情報