これらのファイルをフォルダに入れました。
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つの置換を使用します。
_
最初の置換は、ファイル名の最初の文字まですべてを削除します。 Perl正規表現は、.*?_
ファイル名の先頭から最初のアンダースコアまでのすべてのエントリと一致します。- 2番目の置換
_
は、変更されたファイル名の最初の文字を-
。 - 第3の置換は第2の置換の反復である。つまり、次の
_
文字もに変わります-
。
このコマンドは対応するオプションで呼び出されるため、何もしませんので、-n
正しいことを確認した場合は削除してください。
-d
別のディレクトリにあるファイルへのフルパスを提供する場合、このオプションを使用すると、パスのファイル名部分のみが名前が変更されます。この-v
オプションを使用すると、詳細な操作が可能です。
ファイル名の最初の部分(例:あなたのコメントの1つ) 次に、最初の代替項目を削除します。
rename -n -v -d 's/_/-/ && s/_/-/' *-ee_gitlab_backup.tar