129 votes

Comment supprimer les espaces blancs de tous les fichiers de manière récursive ?

Comment est-ce que vous pouvez supprimer tous les espaces de fin d’un projet entier ? Commençant à un répertoire racine et en supprimant les espaces de fin de tous les fichiers dans tous les dossiers.

Aussi, je veux faire pour pouvoir modifier le fichier directement et pas seulement imprimer tout sur stdout.

89voto

deepwell Points 3285

Voici un OS X > = 10.6 Snow Leopard solution.

Il ignore .git et .svn dossiers et leur contenu. Aussi il ne laissera pas un fichier de sauvegarde.

34voto

Sec Points 2786

Utilisation :

Si vous ne voulez pas les « .bak » fichiers générés :

comme un utilisateur de zsh, vous pouvez omettre l’appel à trouver et utiliser à la place :

31voto

l0b0 Points 10719

Deux approches alternatives qui fonctionnent également avec les DOS des retours à la ligne (CR/LF) et de faire un assez bon travail en évitant les fichiers binaires:

Solution générique qui vérifie que le type MIME commence par text/:

while IFS= read -r -d '' -u 9
do
    if [[ "$(file -bs --mime-type -- "$REPLY")" = text/* ]]
    then
        sed -i -e 's/[ \t]\+\(\r\?\)$/\1/' -- "$REPLY"
    else
        echo "Skipping $REPLY" >&2
    fi
done 9< <(find . -type f -print0)

Dépôt Git spécifique de la solution par Mat qui utilise l' -I option de git grep pour ignorer les fichiers qui Git estime être binaire:

git grep -I --name-only -z -e '' | xargs -0 sed -i -e 's/[ \t]\+\(\r\?\)$/\1/'

25voto

Adam Rosenfield Points 176408

En Bash :

``

(Edit : ne donne des erreurs pour les répertoires ; aussi maintenant supprime uniquement les espaces blancs (auparavant il enlevait les espaces de début et de fin))

15voto

pojo Points 1753

Cela a fonctionné pour moi dans l’OS x 10.5 Leopard, qui n’utilise pas GNU sed ou xargs.

Juste faire attention avec cela si vous avez des fichiers qui doivent être exclus (je l’ai fait) !

Vous pouvez utiliser - prune d’ignorer certains répertoires ou fichiers. Pour les fichiers Python dans un dépôt git, vous pourriez utiliser quelque chose comme :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X