Archives par mot-clé : Bash

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

Publié dans Snippet | Laisser un commentaire

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\'`

Extraire tous les fichiers ZIP d’un dossier en bash

Publié dans Snippet | Laisser un commentaire

Snippet

for file in *.zip; do 7z e "$file"; done

Explications

Il est possible d’utiliser la commande unzip, mais pour une plus grande efficacité et flexibilité, l’installation de 7zip est conseillé ! A la fin de l’installation, il faut ajouter le dossier de 7z à la variable d’environnement PATH afin de pouvoir y accéder en ligne de commande.

  • La commande pour extrait un fichier est 7z e filename.zip (ou unzip filename.zip). L’avantage de 7zip, c’est qu’il gère plusieurs formats d’archives.
  • La commande pour lister tous les documents du dossier courant est for nameOfTheVariable in .; do echo $nameOfTheVariable; done.
  • A partir de là, j’ai fait une boucle sur les fichiers se terminant par « .zip » exclusivement.