複数のファイル名を変更するには?

複数のファイル名を変更するには?

これらのファイルをフォルダに入れました。

1658286488_2022_07_21_15.1.2-ee_gitlab_backup.tar 
1658546417_2022_07_22_15.1.2-ee_gitlab_backup.tar 
2258286417_2022_07_23_15.1.2-ee_gitlab_backup.tar

私は彼らの名前を次のように標準化したいと思います。

2022-07-21_15.1.2-ee_gitlab_backup.tar
2022-07-22_15.1.2-ee_gitlab_backup.tar
2022-07-23_15.1.2-ee_gitlab_backup.tar

私は複雑なbashスクリプトを使用するのがあまり好きではないので、mv、rename、または同様の単​​純なコマンドを探しています。

ベストアンサー1

すでに使用しようとしているので、うまくいくrename解決策は次のとおりですrename(このユーティリティのPerlバージョンはp5-File-Rename一部のシステムではパッケージの一部です)。

rename -n -v -d 's/.*?_// && s/_/-/ && s/_/-/' *-ee_gitlab_backup.tar

上記のコマンドは3つの置換を使用します。

  1. _最初の置換は、ファイル名の最初の文字まですべてを削除します。 Perl正規表現は、.*?_ファイル名の先頭から最初のアンダースコアまでのすべてのエントリと一致します。
  2. 2番目の置換_は、変更されたファイル名の最初の文字を-
  3. 第3の置換は第2の置換の反復である。つまり、次の_文字もに変わります-

このコマンドは対応するオプションで呼び出されるため、何もしませんので、-n正しいことを確認した場合は削除してください。

-d別のディレクトリにあるファイルへのフルパスを提供する場合、このオプションを使用すると、パスのファイル名部分のみが名前が変更されます。この-vオプションを使用すると、詳細な操作が可能です。

ファイル名の最初の部分(例:あなたのコメントの1つ) 次に、最初の代替項目を削除します。

rename -n -v -d 's/_/-/ && s/_/-/' *-ee_gitlab_backup.tar

おすすめ記事