2 votes

Capturer le motif correspondant dans une commande cp/mv

Je veux renommer les fichiers qui sont nommés comme suit db_backup_2019_11_22-12_13_00.gz a db_dump_2019_11_22-12_13_00.sql.gz .

Existe-t-il un moyen de faire cela en utilisant la correspondance de motifs ? Je veux dire comme ceci :

mv db_backup_*-*.gz db_dump_$1-$2.sql.gz

donde $1 , $2 sont des pièces appariées.

2voto

Toto Points 14447

Cela peut être fait avec commande de renommage :

rename 's/backup(.+?)(?=\.gz$)/dump$1.sql/' db_backup*

Explication :

s/                  # substitute
    backup              # literally "backup"
    (.+?)               # group 1, 1 or more any character, not greedy
    (?=\.gz$)           # positive lookahead, make sure we have ".gz" after
/                   # WITH
    dump                # literally "dump"
    $1                  # content of group 1
    .sql                # literally ".sql"
/                   # end substitute

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X