いくつかの異なるルールで膨大な数のファイルの名前を変更するスクリプトを書きたいと思います。いくつかから特定の文字列を削除し、正規表現で他の文字列の名前を変更し (そのうちのいくつかは、以前に文字列を削除したものになります)、ファイル名の番号に基づいて他の名前を変更する必要があります。
一般に、複数のディレクトリ (数百) があり、それらはすべて一般的に次のようになっているとします。
1234-pic_STUFF&TOREMOVE_2000.tiff
1234-pic_STUFF&TOREMOVE_4000.tiff
1234-MORESTUFFTOREMOVE-012.jpg
1234-MORESTUFFTOREMOVE-037.jpg
1234-STUFF&TOREMOVE.pptx.pdf (don't ask about this one)
1234-ET.jpg
1234-DF.jpg
次のようなものに:
1234_smallNum.tiff
1234_bigNum.tiff
1234_smallNum.jpg
1234_bigNum.jpg
1234_CaseReport.pdf
1234_ET.jpg
1234_DF.jpg
perlスクリプトを使用して正規表現で名前を変更するシェルスクリプトをすでに持っています(SOから外しましたが、参照するために再び見つけることができません)。それらは と に似remove_stuff_to_remove.sh
ておりrename_case_reports.sh
、各ディレクトリに cd して、入力なしで呼び出すことで個別に実行できます。
ただし、数値に基づいてファイル名を変換する方法がわかりません (2000 と 012 を smallNum に、4000 と 037 を bigNum に変換します。これらの数値は大きく異なることに注意してください。範囲や正規表現を使用することはできません。数値を比較してください。)
また、プロセス全体を自動化する方法がわからないため、これらすべてのディレクトリのルート ディレクトリから 1 つのスクリプトを呼び出すと、これらすべてのことを実行してくれます。find
私は正規表現をかなりよく理解していますが、コマンドやシェルスクリプト全般についてはあまりうまくいっていません。
また、私は Bash と言いますが、実際には、これが Java、C、Python、Ruby、または Lisp でより適切に実行できるとしたら、それらの言語をはるかによく知っているので、これらのファイルが私にダンプされる前に、これに対する解決策が欲しいだけです。 (翌月かそこらで)...