GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ouvrir ou lister tous les fichiers dont le nom correspond à deux modèles dans Bash ?

Supposons que j'ai un répertoire avec des milliers de fichiers ; comment puis-je ouvrir tous les fichiers dont le nom contient à la fois les chaînes "rouge" et "vert" ?

Réponse acceptée :

(En supposant que vous recherchiez des noms de fichiers qui contiennent les deux la chaîne "rouge" et la chaîne "vert")

Pour utiliser inutilement bash pour tester les noms de fichiers par rapport au "rouge" et au "vert" en utilisant le =~ opérateur de correspondance d'expression régulière :

for f in *
do
  [[ $f =~ red && $f =~ green ]] && echo Bash: yes: "$f" || echo Bash: no: "$f"
done

Pour utiliser la syntaxe standard du shell en utilisant case et globs pour retrouver les mêmes fichiers :

for f in *
do 
  case "$f" in
    *green*red*|*red*green*) echo Case: yes: $f;; 
    *) echo Case: no: $f;; 
  esac
done

Encore plus simple, avec le globbing de votre shell :

printf "Glob: %sn" *green*red* *red*green*

Exemple d'exécution :

$ touch a b aredgreenb agreenredb agreenbred aredbgreen red green redgreen greenred

$ for f in *
>     do
>       [[ $f =~ red && $f =~ green ]] && echo Bash: yes: "$f" || echo Bash: no: "$f"
>     done
Bash: no: a
Bash: yes: agreenbred
Bash: yes: agreenredb
Bash: yes: aredbgreen
Bash: yes: aredgreenb
Bash: no: b
Bash: no: green
Bash: yes: greenred
Bash: no: red
Bash: yes: redgreen


$ for f in *
>     do
>       case "$f" in
>         *green*red*|*red*green*) echo Case: yes: $f;;
>         *) echo Case: no: $f;;
>       esac
>     done
Case: no: a
Case: yes: agreenbred
Case: yes: agreenredb
Case: yes: aredbgreen
Case: yes: aredgreenb
Case: no: b
Case: no: green
Case: yes: greenred
Case: no: red
Case: yes: redgreen

$ printf "Glob: %sn" *green*red* *red*green*
Glob: agreenbred
Glob: agreenredb
Glob: greenred
Glob: aredbgreen
Glob: aredgreenb
Glob: redgreen

Linux
  1. Comment trouver la liste de tous les ports ouverts sous Linux

  2. Comment lister ou trier tous les fichiers par taille sous Linux

  3. Comment lister tous les utilisateurs connectés

  4. Comment convertir des fichiers texte en majuscules ou minuscules

  5. Comment compresser tous les fichiers dans tous les sous-répertoires de bash

Comment lister toutes les bases de données dans PostgreSQL

Comment lire des fichiers ligne par ligne dans Bash

Comment répertorier les descripteurs de fichiers ouverts (et les fichiers auxquels ils se réfèrent) dans la session Bash en cours ?

Comment lister tous les fichiers classés par taille sous Linux ?

Comment lister récursivement tous les fichiers et répertoires

Comment lister tous les fichiers d'une partition sous Linux ?