Abra todos os arquivos no projeto com linhas longas em um editor

2

Gostaria de editar todos os arquivos de texto em um determinado diretório que tenha uma ou mais linhas com mais de um certo limite de comprimento. Como posso fazer isso?

Para manter as coisas simples, vamos supor que todos os arquivos de texto no diretório e seus subdiretórios tenham a mesma extensão de arquivo - digamos .java .

P.S. Meu editor de escolha é o emacs.

    
por Robin Green 22.12.2012 / 08:21

3 respostas

1

Com base na resposta do gniourf_gniourf, aqui está uma maneira que funciona dentro do emacs, e permite que você pule diretamente para as linhas overlong com TAB seguido por RET :

M-x rgrep RET .\{116\} RET *.java RET [insert directory to scan here] RET
    
por Robin Green 23.12.2012 / 00:12
2

Se você não quiser recursão em subdiretórios, é muito mais simples fazer exatamente isso:

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

Se você precisar de recursão em subdiretórios, use a opção globstar :

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

Em um terminal, depois de mudar para o diretório em questão, digite:

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

Isso abrirá todos os arquivos .java que possuem linhas com mais de 116 caracteres em uma nova instância do emacs - a menos que sua variável de ambiente EDITOR esteja configurada com o nome de algum outro editor de texto; em vez disso.

    
por Robin Green 22.12.2012 / 08:21