Eu tenho uma lista de nomes de arquivos (com caminho completo) e quero criar um buffer Dired listando esse conjunto de arquivos. Como eu faria isso?
Como crio um buffer Dired a partir de uma lista de nomes de arquivos?
Sem usar dependências externas.
(find-file your-directory-path)
para obter odired
buffer relevante (por exemplo,(find-file "/tmp/")
abrirá seutmp
diretório em umdired
buffer).Respostas:
C-h f dired
diz a resposta. Apenas passe paradired
, comoDIRNAME
argumento, uma lista que tenha como carro o nome do buffer direcionado que você deseja (qualquer string) e como cdr a lista de nomes de arquivos que você deseja listar no buffer. Geralmente, você deseja usar nomes de arquivos absolutos. Por exemplo:Dependendo da sua plataforma, os nomes de arquivos e diretórios inexistentes inseridos podem ser ignorados (não listados) ou podem gerar um erro. O primeiro acontece se você usar
ls-lisp.el
(por exemplo, MS Windows). Você pode forçar o uso dels-lisp
qualquer plataforma, se quiser (masls-lisp
tem menosls
opções), fazendo o seguinte:Se você usar a biblioteca Dired + (
dired+.el
), poderá escolher interativamente arquivos e diretórios para listar: basta fornecerdired
um argumento de prefixo não positivo (ou seja, <= 0). Em seguida, você será solicitado repetidamente os diretórios e nomes de arquivos que deseja listar. Você pode usar curingas com nome de arquivo (ou seja,*
para globbing), para incluir os arquivos e diretórios correspondentes. UseC-g
para finalizar a entrada.Em outras palavras, em vez de listar um único diretório, o buffer Dired pode listar qualquer número de diretórios e nomes de arquivos, que podem até pertencer a diferentes árvores de diretórios.
(Um prefixo não negativo arg (ou seja,> = 0) solicita as
ls
opções de listagem. Portanto, um prefixo zero arg solicita as opções e os arquivos / diretórios a serem listados: primeiro asls
opções e depois os arquivos / diretórios.)fonte
(insert ...)
para inserir texto em um buffer.dired
é uma função elisp. Apenas avalie isso:(dired '("my-list" "/home/rekado/dev/script.scm" "/home/rekado/another-file"))
e você obtém um buffer direcionado contendo esses arquivos como o @Drew escreveu.Aqui está um comando para fazer isso quando a lista de arquivos estiver em um buffer, com um arquivo por linha.
fonte