2 votes

Ouvrir dans un éditeur tous les fichiers du projet contenant de longues lignes

J'aimerais éditer tous les fichiers texte d'un certain répertoire dont une ou plusieurs lignes dépassent un certain seuil de longueur. Comment puis-je faire cela ?

Pour simplifier les choses, supposons que tous les fichiers texte du répertoire et de ses sous-répertoires ont la même extension de fichier - soit .java .

P.S. Mon éditeur de choix est emacs.

2voto

gniourf_gniourf Points 5285

Si vous ne voulez pas de récursion dans les sous-répertoires, il est beaucoup plus simple de procéder ainsi :

grep -lZ '.\{116\}' *.java | xargs -0 "${EDITOR:=emacs}"

Si vous avez besoin d'une récursion dans les sous-répertoires, utilisez la fonction globstar option :

shopt -s globstar
grep -lZ '.\{116\}' **/*.java | xargs -0 "${EDITOR:=emacs}"

1voto

Patman Points 180

Dans un terminal, après être passé dans le répertoire en question, tapez :

find -name '*.java' -exec awk -vORS=$'\\0' 'length > 116 {print FILENAME; nextfile}' {} +|xargs -0 ${EDITOR:=emacs}

Cela ouvrira toutes les .java qui ont des lignes de plus de 116 caractères dans une nouvelle instance d'emacs - à moins que votre variable d'environnement EDITOR ne prenne le nom d'un autre éditeur de texte, auquel cas il les ouvrira dans celui-ci.

1voto

Patman Points 180

En se basant sur la réponse de gniourf_gniourf, voici une méthode qui fonctionne dans emacs, et qui vous permet de passer directement aux lignes superflues avec TAB suivi par RET :

M-x rgrep RET .\{116\} RET *.java RET [insert directory to scan here] RET

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X