Recherche de fichiers de contenant pas un mot

Espenan
2012-06-07
2012-11-13
  • Espenan
    Espenan
    2012-06-07

    Bonjour,

    Je dois traiter un répertoire contant quelques centaines de fichiers html.

    Je souhaiterais trouver la liste des fichiers répondant à la fois à deux critères
    - contenir le mot : mot1 (dans le code html du fichier)
    - ne pas contenir le mot : mot2 (dans le code html du fichier)

    Est-il possible de faire cette recherche avec Notepad++ (par exemple en utilisant les Regex) ?

    Merci par avance pour toute aide.

    Patrick

     
  • cchris
    cchris
    2012-06-16

    Pas directement, mais un script Python peut être lancé depuis N++ et fournir la liste, ou la traiter. N'étant pas un habitué de Python, je ne rentrerai pas dans les détails.

    CChris

     
  • THEVENOT Guy
    THEVENOT Guy
    2012-08-17

    Salut Patmich,

      Bien que je "suis" Notepad++ depuis la version 4.9.2, j'ai pris
      un compte chez Sourforge.Net depuis 2 jours seulement !

      Aussi, vu que ta question date du 07/06, je suppose que tu as
      déjà du trouver une solution à ton problème !

      Néanmoins, voilà ce que je ferais, en utilisant SEULEMENT N++ :
                                                                                          ¯¯¯¯¯¯¯¯¯¯

     
        1) Sauvegarder, en premier, ce répertoire ( on ne sait jamais ! )
             ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

        2) Supprimer TOUS les fichiers comportant le mot 'mot2'
             ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

            a) Lancer une recherche sur les fichiers de CE RÉPERTOIRE ( CTRL + SHIFT + F )

                 Saisir Mot2 dans la zone 'Rechercher'

                 Cocher, on non, la case 'Respecter la casse'

                 Cocher la case Mode 'Normal' ou, éventuellement, 'Expression régulière'

                 Cliquer sur le bouton 'Trouver tout'

            b) Recopier le contenu de la fenêtre des résultats

                 Cliquer dans la fenêtre des RÉSULTATS qui s'affiche

                 Sélectionner TOUT ( CTRL + A ) et placer le tout dans le PRESSE-PAPIERS ( CTRL + C )

                 Ouvrir un nouveau fichier ( CTRL + N )

                 Coller le texte dans ce nouveau fichier ( CTRL + V )

            c) Conserver les SEULS chemins complets des fichiers

                 Ouvrir la fenêtre de recherche ( CTRL + F ) et choisir l'onglet 'Marquer'

                 Entrer le chemin du répertoire concerné dans la zone de recherche
                                 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                 Cocher la case 'Marquer les lignes'

                 Cliquer sur le bouton 'Rechercher tout'
                
                 Refermer la fenêtre de Recherche

                 Cliquer sur le menu 'Recherche', puis 'Signet' et enfin 'Supprimer les lignes non marquées'

            d) Constituer un fichier BATCH pour supprimer tous ces fichiers ( qui, pour mémoire, comportent 'mot2' )
                                                                                                                                                                       ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                 Ouvrir la fenêtre pour un remplacement ( CTRL + H )

                 Cocher les cases 'Boucler' et 'Expression Régulière'
                                                                       ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                 Saisir  '  (.*?) \(.*' , SANS les guillements SIMPLES, dans la zone de RECHERCHE

                                 ( 2 Espaces au début et 1 espace avant l'antislash )

                 Saisir  'del "\1" /p', SANS les guillemets SIMPLES, dans la zone de remplacement
                
                 Cliquer sur le bouton 'Remplacer tout'

                 Insèrer une 1ère ligne '@echo off', SANS les guillemets, AVANT la liste des fichiers

                 Sauvegarder ce fichier batch sous le nom 'sup.bat', par exemple, dans CE MÊME répertoire
                                                                                                                                        ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                 Lancer une Invite de Commandes par 'cmd.exe'
                
                 Se placer sur le répertoire concerné

                 Lancer sup.bat et valider CHAQUE suppression

                     ( Si AUCUNE confirmation est désirée ou si le nombre de fichiers à supprimer est IMPORTANT,

                         ne PAS mettre le paramère /p dans l'ordre DEL )
                         ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

        3) Lister TOUS les fichiers comportant le mot 'Mot1'
           ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
          
            a) Lancer une recherche sur les fichiers de CE RÉPERTOIRE ( CTRL + SHIFT + F )

                 Saisir Mot1 dans la zone 'Rechercher'

                 Cocher, on non, la case 'Respecter la casse'

                 Cocher la case Mode 'Normal' ou, éventuellement, 'Expression régulière'

                 Cliquer sur le bouton 'Trouver tout'

            b) Recopier le contenu de la fenêtre des résultats

                 Cliquer dans la fenêtre des RÉSULTATS qui s'affiche

                 Sélectionner TOUT ( CTRL + A ) et placer le tout dans le PRESSE-PAPIERS ( CTRL + C )

                 Ouvrir un nouveau fichier ( CTRL + N )

                 Coller le texte dans ce nouveau fichier ( CTRL + V )

            c) Conserver les SEULS chemins complets des fichiers

                 Ouvrir la fenêtre de recherche ( CTRL + F ) et choisir l'onglet 'Marquer'

                 Entrer le chemin du répertoire concerné dans la zone de recherche
                                 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                 Cocher la case 'Marquer les lignes'

                 Cliquer sur le bouton 'Rechercher tout'
                
                 Refermer la fenêtre de Recherche

                 Cliquer sur le menu 'Recherche', puis 'Signet' et enfin 'Supprimer les lignes non marquées'

            d) Finaliser la liste des fichiers  ( qui, pour mémoire, comportent 'mot1' et PAS 'mot2' )
                                                                                                            ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

                  Ouvrir la fenêtre pour un remplacement ( CTRL + H )

                  Cocher les cases 'Boucler' et 'Expression Régulière'
                                                                         ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                  Saisir  '.*\\(.*) \(.*' , SANS les guillements SIMPLES, dans la zone de RECHERCHE

                                  ( 1 espace avant l'antislash )

                  Saisir  '\1', SANS les guillemets SIMPLES, dans la zone de remplacement

                                  ( ou "\1" si on désire entourer les noms par des guillemets DOUBLES )
                                 
                  Cliquer sur le bouton 'Remplacer tout'

      Bonne continuation,
     
      A+
     
      Guy038