Récupèrer une liste contenant une partie des noms de fichiers

Publié dans Snippet | Marqué avec ,
Share

But

Dans un dossier, j’ai quelques fichiers se nommant LocalSettings_Wikimachin.php, LocalSettings_Wikitruc.php, … Je souhaite récupérer une liste contenant seulement « machin » et « truc ».

Snippet

wikis=`ls my-folder | sed \'/^LocalSettings_Wiki/!d\' | sed -e \'s/^LocalSettings_Wiki\\(.\\+\\)\\.php/\\1/g\'`
for wiki in $wikis
do
   echo $wiki
done

Ce qui donne :

machin
truc

Explication

  • ls my-folder : Liste les fichiers et répertoires du dossier « my-folder »
  • sed \'/^LocalSettings_Wiki/!d\' : On ne garde que les lignes commençant par « LocalSettings_Wiki ».
    En effet, le flag « d » permet de supprimer les lignes correspondantes au pattern. Donc le flag « !d » ne conserve que les lignes correspondant au pattern.
  • sed -e \'s/^LocalSettings_Wiki\\(.\\+\\)\\.php/\\1/g\'` : Le flag « s » lance une substitution : « s/pattern/replacement/g ».
    On cherche toutes les lignes qui contiennent par « LocalSettings_Wiki(quelque chose).php » et on les remplace par « quelque chose ».
    En ligne de commande, j’avais une étoile à chaque fin de ligne, j’ai donc modifié la commande comme suite : sed -e \'s/^LocalSettings_Wiki\\(.\\+\\)\\.php\\*/\\1/g\'`

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *