Adicionando tags a arquivos (PDFs) e processos a partir da linha de comando ou script

3

Eu quero adicionar tags aos meus arquivos (neste caso, para arquivos PDF) para que eu possa procurá-los no sistema de arquivos e processar o resultado a partir da linha de comando ou em um script.

Existe uma ferramenta do Linux que pode fazer isso para arquivos em geral?

An Easy way would be to modify the filenames and then access those with find -exec or in pipe Though I want to tag the files with multible tags, and the filenames would get to long, but I want to process them in this kind of way

Por exemplo, digamos que eu tenha muitos arquivos PDF. Então, quero marcar alguns deles como faturas , alguns deles como rascunhos

Para que depois eu possa fazer um aplicativo navegar pelo meu sistema de arquivos e processar todas as correspondências. Vamos dizer criar symlinks para todos eles em uma pasta apropriada, Ou mescla-os com um único PDF, etc.

Minha pergunta não é sobre os programas que viriam segundo no pipe como: ln , gs , pdfjoin , mas sobre aqueles que trabalham diretamente com as tags, como: aplicando as tags e procurando arquivos contendo essas tags.

    
por nath 02.08.2017 / 23:46

2 respostas

3

Isso não corresponde exatamente ao que você está pensando, mas se for interessante trabalhar com arquivos que suportam metadados, exiftool pode visualizar e alterar os metadados em um grande número de tipos de arquivos, incluindo arquivos PDF. Para uma lista completa, consulte man exiftool .

Eu usei-o para criar e alterar metadados em PDFs em várias ocasiões. Por exemplo:

  exiftool -Title="My PDF" \
           -Subject="stuff" \
           -Description="my pdf about various things" \
           -Keywords="miscellanea, nonsense" \
           -Author="me" \
           -Creator="also me" \
           "mypdf.pdf"

Agora, aqui é onde ele se torna mais relacionado à sua ideia. O campo Keywords metadata (ou qualquer outro campo para os formatos de arquivo que suportam a criação de campos arbitrários - muitos deles) pode ser usado para armazenar suas tags nos próprios arquivos, permitindo que o farm de links simbólicos de tags seja mantido automaticamente por um script .

Como alternativa, um script poderia manter um banco de dados (texto plano como CSV ou similar, ou um banco de dados SQL como sqlite ) contendo uma lista de nomes de arquivos (com caminho absoluto completo), metadados do sistema de arquivos (timestamps, tamanho, perms, etc) e suas tags. Outros scripts podem ser escritos para procurar este banco de dados e retornar o (s) resultado (s) em um formato útil.

Por exemplo:

vi $(search-tagged-files --date "last sunday" --keywords thesis)

ou

localc $(search-tagged-files --keywords budget,2017 \
         --mimetype=application/vnd.oasis.opendocument.spreadsheet)

OBSERVAÇÃO: a única grande desvantagem de algo assim é a enorme quantidade de trabalho necessário para manter as tags de cada um dos arquivos. Algumas delas podem ser automatizadas, mas muito disso seria um trabalho manual tedioso e demorado. E isso está ignorando o tempo de design e desenvolvimento para criar um sistema para fazer isso.

Nenhum dos programas usados para criar ou editar arquivos seria de alguma forma integrado a um sistema de gerenciamento de arquivos como este, e nem ferramentas padrão como mv ou cp ou rm .

Você poderia escrever scripts de wrapper para muitos deles que estavam cientes do banco de dados de tags e atualizá-lo automaticamente, mas eu nem saberia por onde começar a fazer isso se você usasse um navegador de arquivos GUI para mover, copiar, abrir arquivos etc ... você provavelmente teria que escrever seu próprio navegador de arquivos.

O trabalho envolvido é provavelmente a maior razão pela qual a maioria das pessoas que tiveram idéias como essa acabaram pensando: "Vou usar uma árvore de diretórios bem organizada". Até mesmo o trabalho necessário para escrever o código para gerenciar os documentos é enorme, e o trabalho para gerenciar os metadados de cada arquivo é ainda maior - geralmente só vale o esforço de organizações muito grandes com pelo menos dezenas de milhares de documentos para manter faixa de.

Esta não é uma ideia nova, tem havido muita pesquisa e desenvolvimento em ideias como esta. Um dos nomes é Sistema de Gerenciamento de Documentos .

    
por 03.08.2017 / 09:19
2

Na minha experiência, a tentativa de marcar arquivos usando metadados pode não ser confiável. Nem todos os gerenciadores de arquivos permitem que você visualize ou modifique os metadados diretamente, e os metadados não são transferidos para sistemas diferentes ou não são exibidos da mesma maneira no Windows como no Linux ou vice-versa.

Pessoalmente, tomei uma abordagem semelhante à forma como o programa TagSpaces lida com ele; Eu adiciono as tags ao próprio nome do arquivo.

O TagSpaces é assim: Filename [tag1 tag2 tag3].ext

Eu faço assim: Filename #tag1 #tag2 #tag3.ext

Descobri que isso é muito eficaz, especialmente associado a um programa como catfish (que é muito parecido com Everything para Windows) vinculado a uma tecla de atalho. Como todas as tags são iniciadas com # , se eu pesquisar a tag #bills , não preciso me preocupar em retornar arquivos com a palavra "bills" em seus nomes que não tenham essa tag.

Eu passei muitas horas investigando diferentes métodos de organizar meus arquivos com tags ou sistemas semelhantes a tags, desde o uso de serviços como o Evernote até hierarquias complicadas de pastas. Esse é o método mais fácil e simples que consegui encontrar e é independente do sistema operacional.

    
por 06.08.2017 / 16:15