#!/bin/bash ls -1 | grep -e "mkv$"> liste.txt # Liste des fichiers exemple # Aliens.2.Le.Retour.1986.TrueFrench.mHD.1080p.AC3-WarezB69-zone-Telechargement.ws.mkv # Aliens.3.1992.TrueFrench.mHD.1080p.AC3-WarezB69-zone-Telechargement.ws.mkv # Aliens.4.La.Resurrection.1997.TrueFrench.mHD.1080p.AC3-WarezB69-zone-Telechargement.ws.mkv # Drone.2017.MULTI.1080p.BluRay.Light.x264.AC3.ACOOL.Zone-Telechargement.ws.mkv # G.I. Joe Conspiration (2013) MULTi-VF2 1080p BluRay x264-PopHD-zone-Telechargement.ws.mkv # Gattaca 1080p MULTi 1997 BluRay x264-Pop (Bienvenue A Gattaca) -zone-Telechargement.ws.mkv # Ghost.in.the.Shell.2017.MULTi.1080p.HDLight.x264.AC3-GZR.WwW.Zone-Telechargement.Ws.mkv # Ghostbusters.2016.EXTENDED.MULTI.ENG.FRENCH(vfq).1080p.x264.AC3.luCFER.www.Zone-Telechargement.com.mkv # Honey (2003) MULTi-VF2 1080p BluRay x264-PopHD-zone-Telechargement.ws.mkv # Hors du temps 2009 TRUEFRENCH AC3 1080p x264-GOLDORAK.mkv # Il faut sauver le soldat Ryan (1998) MULTI 1080p Bluray x264-PopHD (Saving Private Ryan)-zone-Telechargement.ws.mkv # ISRA.88.2016.MULTI.1080p.BluRay.Light.x264.AC3.ACOOL.Zone-Telechargement.ws.mkv # Le chateau dans le ciel (1986) [1080p] MULTi BluRay x264-PopHD.mkv # Le voyage de Chihiro (2001) [1080p] MULTi BluRay x264-PopHD.mkv # Life.2017.FRENCH.1080p.BluRay.Light.x265.HEVC.AC3.ACOOL.Zone-Telechargement.ws.mkv # Logan.2017.MULTI.TRUEFRENCH.1080p.BluRay.Light.x264.AC3.ACOOL.Zone-Telechargement.ws.mkv # Resident.Evil.Vendetta.2017.MULTi.1080p.HDLight.x264.AC3-GZR.WwW.Zone-Telechargement.Ws.mkv # Shanghai Kid (2000) MULTi-VF2 1080p BluRay x264-PopHD (Le.cowboy.de.Shanghai) -zone-Telechargement.ws.mkv # Son of a Gun (2015) 1080p MULTi VFF BluRay x264-PopHD-zone-Telechargement.ws.mkv # Split.2016.MULTI.TRUEFRENCH.1080p.BluRay.DTS.x264-CINeHD.WwW.Zone-Telechargement.Ws.mkv # T2.Trainspotting.2017.MULTI.1080p.BluRay.Light.x264.AC3.ACOOL.Zone-Telechargement.ws.mkv # The Shawshank Redemption 1994 Multi-VF2 1080p BluRay x264-PopHD (Les.Évadés)-zone-Telechargement.ws.mkv # The.Boss.Baby.2017.MULTi.1080p.BluRay.Light.x264.AC3.ACOOL.Zone-Telechargement.ws.mkv # The.Lost.City.Of.Z.2016.TRUEFRENCH.1080p.Bluray.Light.x264.AC3.ACOOL.Zone-Telechargement.ws.mkv awk -v strdate="$(date +%Y-%m-%d)" -v format=luc ' function deleteSite(_string) { match(_string,/([Ww]+[\.-])?[Zz][Oo][Nn][Ee]-[Tt][Ee][Ll][Ee][Cc][Hh][Aa][Rr][Gg][Ee][Mm][Ee][Nn][Tt](\.([Cc][Oo][Mm]|[Ww][Ss]))?/); if (RLENGTH != -1) { avant=substr(_string,1,RSTART-1); apres=substr(_string,RSTART+RLENGTH,length(_string)-RLENGTH); s=avant apres; } else { s=_string; } return s } BEGIN { _fichier="rename." strdate ".sh"; print "#!/bin/bash" > _fichier; printf("| %40s | %25s | %4s | %5s | %4s | %3s | %18s |\n","Titre","Titre alt.","Date","Res.","Vid.","Son","Langue"); printf("\n# | %40s | %25s | %4s | %5s | %4s | %3s | %18s |\n","Titre","Titre alt.","Date","Res.","Vid.","Son","Langue") > _fichier; } { _fileUPPER=deleteSite(toupper($0)); _fileLOWER=deleteSite(tolower($0)); _titre=""; _titreALT=""; _date=""; _rez=""; _codecVideo=""; _codecAudio=""; _lang=""; _tmp=""; _ext=substr(_fileLOWER,length(_fileLOWER)-3,4); match(_fileLOWER,/(19[0-9][0-9]|20[0-9][0-9])/); if (RLENGTH != -1) { _date=substr(_fileLOWER,RSTART,RLENGTH); minStart=RSTART; } match(_fileLOWER,/(2160|1080|720)p/); if (RLENGTH != -1) { _rez=substr(_fileLOWER,RSTART,RLENGTH); if (RSTART < minStart) { minStart=RSTART; } } match(_fileLOWER,/([hx]26[45]|hevc)/); if (RLENGTH != -1) { _codecVideo=substr(_fileLOWER,RSTART,RLENGTH); if (RSTART < minStart) { minStart=RSTART; } } match(_fileUPPER,/(AAC|AC3|DTS)/); if (RLENGTH != -1) { _codecAudio=substr(_fileUPPER,RSTART,RLENGTH); if (RSTART < minStart) { minStart=RSTART; } } match(_fileLOWER,/multi/); if (RLENGTH != -1) { _lang="MULTi("; if (RSTART < minStart) { minStart=RSTART; } _tmp=substr(_fileUPPER,RSTART+RLENGTH,length(_fileUPPER)-(RSTART+RLENGTH-1)); do { match(_tmp,/VO|VF[F2Q]?|(TRUE)?FR(ENCH)?|EN(G(LISH)?)?/); if (RLENGTH != -1) { _lang=_lang"."substr(_tmp,RSTART,RLENGTH); _tmp=substr(_tmp,RSTART+RLENGTH,length(_tmp)-(RSTART+RLENGTH)); } } while (RLENGTH != -1) # harmonisation : (TRUE)FRENCH -> FR ENG(LISH) -> EN _lang=_lang ")"; gsub(/ENG(LISH)?/,"EN",_lang); gsub(/(TRUE)?FRENCH/,"FR",_lang); sub(/\(\./,"(",_lang); sub(/\(\)/,"",_lang); } match(_fileLOWER,/\([a-zâàäéêèëîïôöûùüç -\.]+\)/); if (RLENGTH != -1) { _titreALT=substr($0,RSTART,RLENGTH); } _titre=substr($0,1,minStart-1); sub(/ \(?$/,"",_titre); sep=substr(_titre,length(_titre),1); if (sep==".") { gsub(/\./," ",_titre); } sub(/ $/,"",_titre); # tableau récapitulatif de ce qui a été détecté printf("| %40s | %25s | %4s | %5s | %4s | %3s | %18s |\n",_titre,_titreALT,_date,_rez,_codecVideo,_codecAudio,_lang); printf("# | %40s | %25s | %4s | %5s | %4s | %3s | %18s |\n",_titre,_titreALT,_date,_rez,_codecVideo,_codecAudio,_lang) > _fichier; # création du nouveau nom de fichier (FILM) _film=_titre " (" _date ") [" _rez "." _codecVideo "." _codecAudio "." _lang "]" _ext; # nettoyage : ".." -> "." ".]" -> "]" "()" -> "" "[]" -> "" " " -> " " gsub(/\.\.+/,".",_film); sub(/\.\]/,"]",_film); gsub(/[\(\[][\)\]]/,"",_film); gsub(/ +/," ",_film); # création du nouveau nom de fichier (FILM) au format luc if (format=="luc") { if (_lang=="") { _lang="fr"; } else if (_lang ~ "^MULTi$") { _lang="{en-fr}"; } else { gsub(/VF[F2Q]?/,"fr",_lang); sub(/MULTi\(/,"{",_lang); sub(/\)/,"}",_lang); _lang=tolower(_lang); } _film=_titre " [" _date "." _codecVideo "." _codecAudio "." _lang "]" _ext # nettoyage : ".." -> "." gsub(/\.\.+/,".",_film); } _fichiersOLD[NR]=$0; _fichiersNEW[NR]=_film; } END { for (i in _fichiersNEW) { # print "\n" _fichiersOLD[i] "\n" _fichiersNEW[i]; print "\n# " _fichiersOLD[i] "\n# " _fichiersNEW[i] > _fichier; printf("mv \"%s\" \"%s\"\n",_fichiersOLD[i],_fichiersNEW[i]) > _fichier; } } ' liste.txt