squeeze-empty-lines est un outil CLI écrit en Go qui supprime toutes les lignes vides d’un ensemble de fichiers texte, de manière récursive.
Il normalise également les fins de ligne (CR, LF, CRLF) vers le format Unix (LF).
Cet outil est rapide, déterministe, sûr.
- suppression complète des lignes vides
- normalisation des fins de ligne en
LF - traitement récursif des répertoires
- exécution parallèle (multi-cœurs)
- exclusion automatique des fichiers binaires
- filtrage par extension
- filtrage précis par regex (
--include,--exclude) - mode simulation (
--dry-run) - création optionnelle de sauvegardes (
--backup) - binaire statique, sans dépendances, vive GO !
Fichier original :
ligne 1
ligne 2 ligne 3
ligne 4
Après traitement (--collapse-internal-spaces)
ligne 1
ligne 2 ligne 3
ligne 4
go install github.com/votreuser/squeeze-empty-lines@latest
Le binaire sera installé dans :
$GOPATH/bin
CGO_ENABLED=0 go build \
-trimpath \
-ldflags="-s -w" \
-o squeeze-empty-lines
strip squeeze-empty-lines
Traitement du dossier courant :
squeeze-empty-lines .
Traitement d’un fichier spécifique :
squeeze-empty-lines fichier.py
Traitement de plusieurs dossiers :
squeeze-empty-lines src tests
Affiche les fichiers qui seraient modifiés, sans les modifier.
squeeze-empty-lines --dry-run .
Crée une sauvegarde .bak avant modification.
squeeze-empty-lines --backup .
Exemple :
script.py
script.py.bak
Inclut uniquement les fichiers correspondant à la regex. Exemple :
squeeze-empty-lines --include '\.py$' .
Exclut les fichiers correspondant à la regex. Exemple :
squeeze-empty-lines --exclude 'test' .
Nombre de threads utilisés. Par défaut : nombre de CPU disponibles. Exemple :
squeeze-empty-lines --workers 4 .
Par défaut, seuls les fichiers texte suivants sont traités :
.go .py .js .ts .java .c .cpp .rs .html .css .json .yaml .xml .md .sh .txt
Les fichiers binaires sont automatiquement ignorés.
.git
node_modules
vendor
venv
.venv
target
L’outil :
- ne modifie pas les fichiers binaires
- peut créer des sauvegardes
- ne modifie pas le contenu des lignes non vides
Optimisé pour :
- grands dépôts
- traitements massifs
- exécution multi-cœurs Peut traiter des dizaines de milliers de fichiers en quelques secondes !
- nettoyage de dépôts Git
- normalisation avant commit
- préparation de datasets
- réduction de la taille de fichiers texte
- homogénéisation
Fonctionne sur :
- Linux
- macOS
- Windows (probablement, ça build en CI/CD, mais Windows c’est nul)
MIT