Eu tive algumas tarefas em que precisei fazer relatórios sobre alterações de arquivos em diretórios de servidores diferentes e consegui fazer os relatórios usando comandos Unix simples. Eu usei:
ls -R -lT /Volumes/www/subdir/ | awk '{if ($7=="" ) print $0; else print $11";"$7"/"$8"/"$10;}' > /Users/[username]/Desktop/output.txt
Agora preciso fazer um relatório de todos os arquivos PDF com metadados ausentes. Eu queria saber se existe uma maneira (muito parecida com o meu método atual) para verificar os metadados de um arquivo e produzir apenas aqueles com metadados ausentes. Eu quero canalizar os resultados ls para um arquivo para que eu possa importar os dados para exel. Nos meus outros relatórios usei o awk para formatar a saída ls para que ela pudesse ser importada para o exel.
Esta operação será feita em um Mac e prefere usar comandos internos durante a instalação, pois não tenho direitos de administrador para instalar software em hardware de escritório.
Atualização:
Este relatório será modificado para não apenas relatar em PDFs, mas eu prevejo ter que relatar outros tipos de arquivos no futuro. Assim, um relatório pode pesquisar um ou vários tipos de arquivo.
Os metadados que preciso verificar agora são:
- título
- autor
- assunto
- palavras-chave
Eu consegui listar os metadados dos arquivos usando:
mdls [path to file]
Isso resulta em uma lista de todos os metadados. Eu testei com um pdf com meta preenchida e outra sem meta preenchida. Eu notei que com os metadados ausentes, não está retornando null, mas não listando a chave mata.
Algo que estou tentando atualmente é:
mdfind -onlyin /Volumes/web/ "kMDItemAuthors == ''"
Como eu poderia usar esses dados para filtrar a saída de ls
Atualização:
Consegui obter um relatório que lista todos os pdfs, usando o seguinte:
ls -R -lT [server directory path] | grep ".[file extension]" | awk '{print $11";"$7"/"$8"/"$10;}' > [output file path]
Um dos efeitos colaterais disso é que estou perdendo a propriedade recursiva do ls. Ainda trabalhando nisso.
Também preciso encontrar uma maneira de filtrar apenas os que não possuem os metadados necessários. Também fui aconselhado a também fazer um relatório dos PDFs que possuem todos os metadados também. Eu tentei usar este comando atual e canalizar a saída para mdfind primeiro depois para awk, mas devo estar faltando alguma coisa.