一連のファイル名の番号接尾辞を変更するにはどうすればよいですか?

一連のファイル名の番号接尾辞を変更するにはどうすればよいですか?

ファイル名に番号接尾辞が付いた一連のファイルの例を次に示します。

  • 画面1.png
  • 画面2.png
  • 画面3.png
  • 画面4.png
  • 画面5.png
  • 画面6.png
  • 画面7.png
  • 画面8.png

さて、何らかの理由でこれらのファイルの名前を変更して番号が 2 から始まるようにする場合、screen1.png を screen2.png に、screen2.png を screen3.png などに変更する必要があります。しかし、screen1.png を screen2.png に名前変更しようとする時点で、その名前のファイルがすでに存在するため、この操作は失敗します。

これは、Windows で一連のスクリーンショットを撮るときに私が好んで付けるファイル名です。そのため、時々このような状況に陥ることがあります。スクリーンショットを 1 つスキップした可能性があります。おそらく、スクリーンショット 5 の前、スクリーンショット 4 の後に発生するセットアップ プロセスを示すスクリーンショットです。これは 5 番になるはずですが、それを保存するには、まず screen5.png を screen6.png に名前変更し、その後に続くすべてのファイルを時系列順にする必要があります。

名前を変更:

  • 画面1.png
  • 画面2.png
  • 画面3.png
  • 画面4.png
  • 画面5.png > 画面6.png
  • 画面6.png > 画面7.png
  • 画面7.png > 画面8.png
  • 画面8.png > 画面9.png

結果:

  • 画面1.png
  • 画面2.png
  • 画面3.png
  • 画面4.png
  • 画面6.png
  • 画面7.png
  • 画面8.png
  • 画面9.png

ファイルが追加されました:

  • 画面1.png
  • 画面2.png
  • 画面3.png
  • 画面4.png
  • 画面5.png+
  • 画面6.png
  • 画面7.png
  • 画面8.png
  • 画面9.png

作業を楽にしてくれるスクリプト、ツール、正規表現などはありますか? スーパーユーザーの皆さんのほとんどが、このような状況に何度も遭遇したことがあると思います。この問題の解決策を教えていただけませんか?

答え1

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; rename screen$i.png screen$j.png }

まずこれを実行することで安心できます

$ perl -e 'for $i (reverse 5..8) { $j=$i+1; print "rename screen$i.png screen$j.png\n" }'
rename screen8.png screen9.png
rename screen7.png screen8.png
rename screen6.png screen7.png
rename screen5.png screen6.png

Windows の場合は、「'」の代わりに「」を使用し、「...」の代わりに qq(...) を使用する必要があります。

答え2

必要なのは、「複数ファイルの名前変更」機能(すべての名前の競合は自動的に解決されます)を備えたファイルマネージャだけです。そのようなマネージャのほとんどでは、外部エディタでファイルを編集できます。外部エディタでは、ファイルマネージャよりも数値の編集がはるかに高速です。少なくとも総司令官そしてアンリアル・コマンダーそのような機能があります。

または、シェルを使用して、これを実行するための小さな 1 行のスクリプトを作成することもできます。

複数のファイルの名前を変更するスタンドアロンスクリプトを使用することもできます。ヴィム他にも似たようなスクリプトはあります。他のエディタを使用するように設定することもできますが、私の意見では、Vimは他のどのエディタよりもその目的に適しています。VisIncrプラグインおよび組み込みの数値増分/減分コマンド (:help CTRL-Aおよび:help CTRL-X)。

もう一つの方法はヴィフムは、選択したファイル名の数字を増分/減分する機能をサポートしています (Vim と同じキー)。ただし、これはコンソール アプリケーションであり、主に Vim 中毒の人向けです。

関連情報