Si votre système linux n'offre pas renommer Vous pouvez également utiliser la méthode suivante :
find . -type f -name "Friends*" -execdir bash -c 'mv "$1" "${1/\w+\s*-\s*(\d)x(\d+).*$/S0\1E\2.srt}"' _ {} \;
J'utilise ce snippet assez souvent pour effectuer des substitutions avec des regex dans ma console.
Je ne suis pas très doué en shell, mais pour autant que je comprenne ce code, son explication serait la suivante : les résultats de la recherche de votre trouver sera transmise à une commande bash ( bash -c ) où le résultat de votre recherche se trouvera à l'intérieur de $1 comme fichier source. la cible qui suit est le résultat d'une substitution à l'intérieur d'un sous-shell, où le contenu de $1 (ici : juste 1 à l'intérieur de votre substitution de paramètres { 1 //find/replace} ) sera également le résultat de votre recherche. {} le transmet au contenu de -execdir
de meilleures explications seraient appréciées :)
Remarque : je n'ai fait que copier-coller votre expression rationnelle ; veuillez la tester d'abord avec des fichiers d'exemple. selon votre système, vous devrez peut-être modifier les éléments suivants \d y \w à des classes de caractères telles que [[:digit :]] ou [[:alpha :]], \1 devrait fonctionner pour les groupes.