何千ものファイルを含むフォルダがあります。
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
これを試す前に、まずバックアップがあることを確認してください。
幸いなことに、あなたの例には古い名前と新しい名前にスペースがなく、サブディレクトリへの言及もありません(すべて同じディレクトリにあります)。したがって、リストのすべての行は次のようになります。
- 画像と
rename_rules.txt
同じディレクトリに - cdでディレクトリに入ります
ランニング:
eval "$(sed 's/^/mv /g' rename_rules.txt )"
- 各行には
rename_rules.txt
ペアのみが含まれます。oldname newname
sed
rename_rules
あなたを次に変換するために使用されました。mv oldname newname
eval
その後、これを実行するために使用されるため、ファイル名が変更されます。
- 各行には
oldname newname
免責事項:この単純な短いスクリプトには、検証やファイルチェックはまったく組み込まれていません。したがって、名前の変更のペアの1つにエラーがある場合に備えて、最初にすべきことはバックアップがあることを確認することです。少なくともバックアップから始めることができます