正規表現を使用した「名前の変更」に関する問題(Linux)

正規表現を使用した「名前の変更」に関する問題(Linux)

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

テスト用にtouch2つの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

  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
    
  2. 考慮する:

    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
    

おすすめ記事