Откройте все файлы в проекте с длинными строками в редакторе

Я хотел бы отредактировать все текстовые файлы в определенном каталоге, в которых есть одна или несколько строк, длина которых превышает определенный порог. Как я могу это сделать?

Для простоты давайте предположим, что все текстовые файлы в каталоге и его подкаталогах имеют одинаковое расширение файла - скажем, .java.

P.S. Мой любимый редактор - emacs.

2
задан 23 December 2012 в 03:03

3 ответа

В терминале после перехода в соответствующий каталог введите:

find -name '*.java' -exec awk -vORS= 

Откроется все файлы .java, содержащие строки длиной более 116 символов, в новом экземпляре emacs - если вашей переменной окружения EDITOR присвоено имя какого-либо другого текстового редактора, и в этом случае он откроет их вместо этого.

\\0' 'length > 116 {print FILENAME; nextfile}' {} +|xargs -0 ${EDITOR:=emacs}

Откроется все файлы .java, содержащие строки длиной более 116 символов, в новом экземпляре emacs - если вашей переменной окружения EDITOR присвоено имя какого-либо другого текстового редактора, и в этом случае он откроет их вместо этого.

0
ответ дан 23 December 2012 в 03:03

Если вы не хотите рекурсии в подкаталогах, сделать это гораздо проще:

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

Если вам нужна рекурсия в подкаталогах, используйте опцию globstar:

shopt -s globstar
grep -lZ '.\{116\}' **/*.java | xargs -0 "${EDITOR:=emacs}"
0
ответ дан 23 December 2012 в 03:03

Основываясь на ответе gniourf_gniourf, вот способ, который работает в emacs и позволяет вам переходить непосредственно к длинным строкам с помощью TAB, за которым следует RET:

M-x rgrep RET .\{116\} RET *.java RET [insert directory to scan here] RET
0
ответ дан 23 December 2012 в 03:03

Другие вопросы по тегам:

Похожие вопросы: