複数のファイル名を変更する、Bashスクリプト(好ましくはaddを使用)

複数のファイル名を変更する、Bashスクリプト(好ましくはaddを使用)

こんにちは、Bashスクリプトを作成する際にいくつかの問題があります。 7000の画像ファイル(dicom)があります。これらのファイルは一緒に属し、順番にディレクトリに配置する必要があります。ただし、これらのファイルを生成するプログラムは、2048ファイルごとに新しいサブフォルダを開いて再起動するようです。このサブフォルダのイメージ名を変更したいと思います。

2048枚の画像(IM_0001〜IM_2048)を含むフォルダがあるとします。 900個の画像を含むフォローアップフォルダがあります。 (IM_0001からIM_0900に再度名前が付けられています)

私の考えでは:

  1. Forループは、2番目のフォルダ内のすべてのファイルを繰り返します。
  2. mv IM_{number} IM_{number+2048} (したがって、IM_0001はIM_2049になります。)

つまり、基本的にすべてです。このタスク(または同様のタスク)を実行する簡単で効率的な方法はありますか?残念ながら、私はBashの構文に慣れていないので、どんな意見でも私たちに感謝します。名前が似ている必要があります!したがって、単に2番目のフォルダ内のすべてのプロジェクトの名前をJM_0001からJM_0900に変更すると、インポートツール(残念ながら作業するにはその特定のツールを使用する必要があります)が混乱します。

ありがとうございます!

ベストアンサー1

ファイル名に拡張子がない場合:

for i in secondfolder/IM_* ; do mv "$i" "${i%_[0-9]*}_$[10#${i##*_}+2048]" ; done

おすすめ記事