
2つのファイルを生成するバックアップスクリプトがあります。
ㅏ) db_mywebsite_2018-01-10_00-25.sql.gz
(150MB)
第二) mywebsite1_2018-01-10_00-01.tar.gz
(2GB)
ファイル名から日付(XXXX-XX-XX_XX-XX)を削除したいです。バックアップは毎日行われるため、ファイル名は日付が異なります。これを行うには、次のコマンドを使用します。
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
テスト用にtouch
2つのdb_mywebsite_2018-01-10_00-25.sql.gz
ファイルを編集しました。mywebsite1_2018-01-10_00-01.tar.gz
注文する:
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
出力:
db_mywebsite_2018-01-10_00-25.sql.gz renamed as db_mywebsite.sql.gz
1。問題は、上記のメッセージ「db_mywebsite_2018-01-10_00-25.sql.gzがdb_mywebsite.sql.gzに名前が変更されたにもかかわらず、確認すると、ls -l
そのファイル名が変更されていないように見えることです。
2。ファイル名の変更コマンド(正規表現)は機能しませんmywebsite1_2018-01-10_00-01.tar.gz
。
答え1
Perlバージョンの場合、
rename
このオプションは次-n
のことを意味します。ジョブなし:名前を変更するファイル名を印刷しますが、名前を変更しません。 ファイル名を変更するには、この-n
オプションを使用しないでください。だから代わりに:rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
使用:
rename -v 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
考慮する:
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
上記のコマンドはでのみ名前を変更しようとします。ファイルがで始まるので、
.sql.gz
名前は変更されません。両方のファイルの名前を変更するには、次のようにします。mywebsite1_2018-01-10_00-01.tar.gz
.tar.gz
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.tar.gz *.sql.gz