3

Я хочу найти ключевое слово, говорит «действие», в куче файлов на моем ПК с Windows с Emacs.

Отчасти потому, что я хочу изучить более продвинутые возможности Emacs. Это также потому, что ПК с Windows заблокирован политикой компании. Я не могу установить полезные приложения, такие как Cygwin по желанию.

Поэтому я попробовал эту команду: M-x rgrep

Выдает следующее сообщение об ошибке:

*- mode: grep; default-directory: "c:/Users/me/Desktop/Project" -*-
Grep started at Wed Oct 16 18:37:43

find . -type d "(" -path "*/SCCS" -o -path "*/RCS" -o -path "*/CVS" -o -path "*/MCVS" -o -path "*/.svn" -o -path "*/.git" -o -path "*/.hg" -o -path "*/.bzr" -o -path "*/_MTN" -o -path "*/_darcs" -o -path "*/{arch}" ")" -prune -o "(" -name ".#*" -o -name "*.o" -o -name "*~" -o -name "*.bin" -o -name "*.bak" -o -name "*.obj" -o -name "*.map" -o -name "*.ico" -o -name "*.pif" -o -name "*.lnk" -o -name "*.a" -o -name "*.ln" -o -name "*.blg" -o -name "*.bbl" -o -name "*.dll" -o -name "*.drv" -o -name "*.vxd" -o -name "*.386" -o -name "*.elc" -o -name "*.lof" -o -name "*.glo" -o -name "*.idx" -o -name "*.lot" -o -name "*.fmt" -o -name "*.tfm" -o -name "*.class" -o -name "*.fas" -o -name "*.lib" -o -name "*.mem" -o -name "*.x86f" -o -name "*.sparcf" -o -name "*.dfsl" -o -name "*.pfsl" -o -name "*.d64fsl" -o -name "*.p64fsl" -o -name "*.lx64fsl" -o -name "*.lx32fsl" -o -name "*.dx64fsl" -o -name "*.dx32fsl" -o -name "*.fx64fsl" -o -name "*.fx32fsl" -o -name "*.sx64fsl" -o -name "*.sx32fsl" -o -name "*.wx64fsl" -o -name "*.wx32fsl" -o -name "*.fasl" -o -name "*.ufsl" -o -name "*.fsl" -o -name "*.dxl" -o -name "*.lo" -o -name "*.la" -o -name "*.gmo" -o -name "*.mo" -o -name "*.toc" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.ky" -o -name "*.pg" -o -name "*.tp" -o -name "*.vr" -o -name "*.cps" -o -name "*.fns" -o -name "*.kys" -o -name "*.pgs" -o -name "*.tps" -o -name "*.vrs" -o -name "*.pyc" -o -name "*.pyo" ")" -prune -o  -type f "(" -iname "*.sh" ")" -exec grep -i -n "action" {} NUL ";"
FIND: Parameter format not correct

Grep exited abnormally with code 2 at Wed Oct 16 18:37:44

Я считаю, что rgrep пытался остановить процесс и вызывал 'FIND' со всеми параметрами. Однако, поскольку это Windows, исполняемый файл Find по умолчанию просто не знает, как с ним обращаться.

Как лучше искать ключевое слово в нескольких файлах в Emacs на платформе Windows, без какой-либо зависимости от внешних программ?

Версия Emacs: 24.2.1

2 ответа2

2
  1. Если вы используете Dired+ и Icicles, вы можете искать все отмеченные файлы в буфере Dired, включая файлы, отмеченные в отмеченных подкаталогах и т.д., Рекурсивно.

    Поиск сосулек - это другой вид инкрементального поиска. Вы определяете контексты поиска, которые являются частями вашего текста для поиска. Вы определяете контексты, предоставляя регулярное выражение, которому они соответствуют. В простом случае поведения, rgrep , контексты - это просто отдельные строки текста, и поэтому регулярное выражение для определения контекста имеет вид .* (Соответствует чему угодно, кроме символа новой строки).

    Вот краткий обзор поведения поиска (и замены) сосулек.

    Если вы загрузили как Сосульки, так и Dired+, то команда для поиска всех отмеченных файлов в текущем буфере Dired и под ним находится на клавише M-s M-s m , и она находится в строке меню режима Dired как Multiple > Marked Here and Below > Icicles > Icicles Search (and Replace).

  2. Если вы используете только Dired+, а не Icicles , вы все равно можете постепенно выполнять поиск во всех файлах, отмеченных в текущем каталоге Dired, и во всех подкаталогах (рекурсивно). В этом случае для поиска используется обычный Emacs Isearch. В режиме Dired ключи для этого - M-+ M-s a C-s (поиск строки, команда diredp-do-isearch-recursive) и M-+ M-s a C-M-s (поиск regexp, команда diredp-do-isearch-regexp-recursive) , Существует также неинкрементная версия, команда diredp-do-search-recursive , которая связана с M-+ A (Существуют также ключи / команды для замены запросов в отмеченных файлах внутри и ниже текущего каталога Dired.)

  3. Если у вас есть Dired+ и Icicles, и вы заинтересованы только в том, чтобы выяснить, какой из заданного набора файлов содержит данное ключевое слово, то есть вы не ищете вхождения этого ключевого слова, а хотите только узнать, присутствует ли оно, тогда вы можете используйте M-+ C-F (команда icicle-visit-marked-file-of-content-recursive , меню Multiple > Marked Here and Below > Icicles > Open File of Content).

  4. Последнее слово об обработке файлов, помеченных "здесь и ниже": вы можете пометить подкаталог и не отмечать ни один из его файлов, чтобы иметь тот же эффект, что и маркировка каждого из его файлов. Смотрите Dired+ для получения дополнительной информации.

1

Откройте каталог, в котором вы хотите искать в dired-mode . Затем отметьте все файлы, которые вы хотите найти, и, наконец, выполните M-x dired-do-search RET keyword RET .

Это будет искать отмеченные файлы по keyword .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .