
異なるサーバーのディレクトリ上のファイルの変更に関するレポートを作成する必要があるタスクがいくつかありましたが、簡単な 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 だけでなく、将来的には他のファイル タイプについてもレポートするように変更される予定です。そのため、レポートでは 1 つまたは複数のファイル タイプを検索できます。
現時点で確認する必要があるメタデータは次のとおりです。
- タイトル
- 著者
- 主題
- キーワード
以下を使用してファイルのメタデータをリストすることができました:
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]
この副作用の 1 つは、ls からの再帰プロパティが失われることです。まだこれに取り組んでいます。
また、必要なメタデータが欠落しているものだけをフィルタリングする方法も見つける必要があります。また、すべてのメタデータを含む PDF のレポートも作成する必要があるとアドバイスされました。この現在のコマンドを使用して、出力を最初に mdfind にパイプし、次に awk にパイプしてみましたが、何かが足りないようです。
答え1
使用exifツール。
指定したメタデータのいずれかが空である、拡張子が再帰的に ( )-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)
もっと一般的なものが必要な場合は、1 つのファイルのチェックを行うプログラム/スクリプトを作成し、それを各ターゲットで順番に実行する必要があります。たとえば、次のようになります。
find . -name "*.pdf" -exec check \;
ここで、常に成功 (0) を返し、問題のあるファイルの名前を適切に出力することを確認しますcheck file
。または、ファイルが壊れている場合にのみ成功を返すように上記を調整し、次のようにします。
find . -name "*.pdf" -exec check \; -print