A própria organização fornece um recurso para filtrar / pesquisar informações armazenadas em .orgarquivos de várias maneiras. É chamado de "Agenda" . O org-modemanual fornece informações abrangentes sobre como usá-lo (verifique o link acima ou faça isso C-h i m Org Mode RETno Emacs e navegue até o capítulo "Vistas da agenda"), para que não faça sentido repetir todas essas informações aqui. O texto introdutório do manual resume o que você pode fazer com ele (grifo meu):
A organização pode selecionar itens com base em vários critérios e exibi-los em um buffer separado. São fornecidos sete tipos diferentes de vistas:
- uma agenda que é como um calendário e mostra informações para datas específicas,
- uma lista TODO que abrange todos os itens de ação inacabados,
- uma visualização de correspondência, títulos de exibição com base nas tags, propriedades e estado TODO associados a eles,
- uma exibição da linha do tempo que mostra todos os eventos em um único arquivo organizacional, na exibição ordenada por tempo,
- uma exibição de pesquisa de texto que mostra todas as entradas de vários arquivos que contêm palavras-chave especificadas ,
- uma exibição de projetos bloqueados mostrando projetos que atualmente não se movem e
- visualizações personalizadas que são pesquisas especiais e combinações de visualizações diferentes.
A única coisa que você precisa fazer para começar a usar a agenda para pesquisar suas anotações é adicionar os arquivos que deseja pesquisar org-agenda-files:
As informações a serem mostradas são normalmente coletadas de todos os arquivos da agenda, os arquivos listados na variável org-agenda-files. Se um diretório fizer parte desta lista, todos os arquivos com a extensão .orgnesse diretório farão parte da lista.
Portanto, no seu caso, você deseja adicionar algo assim ao seu arquivo init:
(setq org-agenda-files '("/path/to/Notes/Linux" "/path/to/Notes/Programming"))
Para muitos exemplos e conselhos práticos, também recomendo que você consulte o artigo sobre Pesquisa avançada no Worg .
[UPDATE] Limitando a pesquisa a conjuntos de arquivos específicos
Conforme mencionado nos comentários, o OP deseja restringir as pesquisas a conjuntos específicos de arquivos. Em termos técnicos, isso significa definir org-agenda-filesvalores diferentes, dependendo do contexto. Isso pode ser alcançado usando variáveis locais do diretório :
A maneira usual de definir variáveis locais do diretório é colocar um arquivo nomeado .dir-locals.elem um diretório. Sempre que o Emacs visitar qualquer arquivo nesse diretório ou em qualquer um de seus subdiretórios, aplicará as variáveis locais de diretório especificadas em .dir-locals.el, [...].
Por exemplo, digamos que
ao visitar os arquivos armazenados, Notes/Linuxvocê deseja usar a agenda para pesquisar apenas os .orgarquivos armazenados Notes/Linux.
ao visitar os arquivos armazenados Notes/Programming, você deseja usar a agenda para pesquisar apenas os .orgarquivos armazenados Notes/Programming.
Aqui está o que fazer para habilitar esse comportamento:
Adicione um .dir-locals.elarquivo com o seguinte conteúdo a ambos Notes/Linuxe Notes/Programming:
((nil . ((org-agenda-files . (".")))))
Isso define a lista de org-agenda-filespara incluir todos os arquivos no diretório atual.
Adicione o seguinte código ao seu arquivo init:
(add-hook 'org-agenda-mode-hook #'hack-dir-local-variables-non-file-buffer)
Esta etapa é necessária para garantir que *Org Agenda*(um buffer que não seja de arquivo ) respeite as configurações locais do diretório org-agenda-files.
Da próxima vez que você visitar um arquivo armazenado em Notes/Linuxou Notes/Programming, o Emacs perguntará se você deseja aplicar as configurações armazenadas .dir-locals.el. Pressione !para dizer ao Emacs para aplicar as configurações e marcá-las como seguras para sessões futuras (você não será solicitado a fornecer novamente arquivos no mesmo diretório).
M-x org-search-viewAqui está o link para a documentação: orgmode.org/manual/Search-view.html