← retour aux snippets

bash: globstar pour parcours récursif simple

Activer shopt -s globstar et parcourir ** pour matcher récursivement.

objectif

Remplacer certains find basiques par des globs lisibles.

code minimal

shopt -s globstar nullglob
for f in **/*.log; do
  echo "$f"
done

utilisation

# copier tous les .md sauf node_modules
shopt -s globstar dotglob
for f in **/*.md; do
  [[ "$f" == *node_modules/* ]] && continue
  cp "$f" /tmp/md/
done

variante(s) utile(s)

# itérer sur fichiers ou rien (nullglob évite **/*.md => literal)
shopt -s nullglob

notes

  • spécifique à bash 4+.
  • attention aux performances sur d’énormes arborescences.