列出缺少元資料的 PDF 文件

列出缺少元資料的 PDF 文件

我有一些任務需要對來自不同伺服器的目錄上的檔案變更進行報告,並設法使用簡單的 Unix 命令來製作報告。我用了:

ls -R -lT /Volumes/www/subdir/ | awk '{if ($7=="" ) print $0; else print $11";"$7"/"$8"/"$10;}' > /Users/[username]/Desktop/output.txt 

現在我需要製作所有缺少元資料的 PDF 檔案的報告。我想知道是否有一種方法(很像我目前的方法)來檢查文件的元數據並僅輸出缺少元數據的文件。我想將 ls 結果透過管道傳輸到一個文件,以便我可以將資料匯入 Excel。在我的其他報告中,我使用 awk 來格式化 ls 輸出,以便將其匯入到 Excel 中。

此操作將在 Mac 上完成,並且更喜歡使用內建命令而不是安裝,因​​為我沒有在辦公室硬體上安裝軟體的管理員權限。

更新: 該報告將被修改為不僅報告 PDF,而且我預計將來必須報告其他文件類型。因此,報告可以搜尋一種或多種文件類型。

我現在需要檢查的元資料是:

  • 標題
  • 作者
  • 主題
  • 關鍵字

我已經成功地使用以下方法列出了文件元資料:

mdls [path to file]

這會產生所有元資料的清單。我用一份填寫了元的pdf和一份沒有填寫元的pdf對其進行了測試。我注意到缺少元數據,它不會返回 null,而是根本不列出元鍵。

我目前正在嘗試的事情是:

mdfind -onlyin /Volumes/web/ "kMDItemAuthors == ''"

我如何使用這些數據來過濾輸出ls

更新: 我設法透過使用以下內容來獲得列出所有 pdf 的報告:

ls -R -lT [server directory path] | grep ".[file extension]" | awk '{print $11";"$7"/"$8"/"$10;}' > [output file path] 

這樣做的副作用之一是我失去了 ls 的遞歸屬性。仍在致力於此。

我還需要找到一種方法來僅過濾那些缺少所需元資料的內容。我還被告知我還需要製作一份包含所有元資料的 PDF 報告。我嘗試過使用當前命令並將輸出先通過管道傳輸到 mdfind,然後再傳輸到 awk,但我一定錯過了一些東西。

答案1

使用出口工具

-T -FilePath若要遞歸列印所有具有副檔名pdf( -r) 且/search/path指定元資料為空的檔案的完整路徑 ( ),請使用:

exiftool -T -FilePath \
         -if '$FileTypeExtension eq "pdf"' \
         -if '(not $Title) or (not $Author) or (not $Subject) or (not $Keywords)' \
         -r /search/path

自訂命令以滿足您未來的需求。

答案2

如果您想要更通用的東西,您必須創建一些程式/腳本來檢查一個文件,然後find(1)依次在每個目標上運行它,例如:

find . -name "*.pdf" -exec check \;

確保check file始終返回成功 (0),並根據需要列印有問題的文件的名稱。或調整上面的內容,以便在文件損壞時返回成功,然後執行:

find . -name "*.pdf" -exec check \; -print

相關內容