パールの名前を変更する

パールの名前を変更する

次の名前の複数のファイルを含むディレクトリがあります。

  • 一般名 - dd-01_.txt
  • 一般名 - dd-02_.txt
  • 一般名-dd-03_.txt
  • 一般名 - dd-04_.txt

次のように番号と拡張子だけを維持しながら、すべての名前を変更したいと思います。

  • 01.txt
  • 02.txt
  • 03.txt
  • 04.txt

シェルスクリプトを使用してこれをどのように実行できますか?

ベストアンサー1

パールの名前を変更する

私は(perl-)renameを使います。ディストリビューションには 2 種類の名前変更が用意されているため、Perl バージョンの名前変更がインストールされていることを確認できます。

$ rename --version
perl-rename 1.9

これを実行して、-n「テスト実行」でコマンドをテストします。

$ rename 's/[^0-9]*([0-9]*).*/\1.txt/' * -n
generic name- dd -01 _.txt -> 01.txt
generic name- dd -02 _.txt -> 02.txt
generic name- dd -03 _.txt -> 03.txt
generic name- dd -04 _.txt -> 04.txt

満足したら、コマンド自体を実行してください。

$ rename 's/[^0-9]*([0-9]*).*/\1.txt/' *

説明する

  • rename 's/foo/bar/' *:すべてのファイルの名前を変更*します()。正規foo表現をbar
  • [^0-9]*([0-9]*).*[^0-9]*:「キャプチャグループ」に含まれる数字の後に([0-9]*)残りの文字が続く数字ではなく、すべての文字と一致します.*。これは完全なファイル名と一致します。
  • \1.txt:ファイル名をキャプチャされたグループに\1変更します.txt

別の名前を変更する

より簡単な名前変更をインストールした場合は、同様の内容が表示されます。

$ rename --version
rename from util-linux 2.33.1

この場合、次の2つのコマンドを使用できます。

$ rename 'generic name- dd -' '' *
$ rename ' _' '' *

しかし、私はperl-renameを学ぶことを強くお勧めします。

おすすめ記事