2017-06-10 6 views
1

exiftool:はbashスクリプトを使用してPDFのメタデータとしてファイル名の一部を追加し、ファイル名は形式である場合、私はPDF形式で約600本を持ってい

AuthorForename AuthorSurname - 例えばタイトル(日).PDF

フーZ.バー - 馬鹿のためのスクリプトの作成(2017)

バーはFoo - PDFファイルとの楽しい(2016)

メタデータがunfortunatですそれらのほとんどすべてのために私はキャリバーに作成者フィールドをインポートすると空白です。

私は ' - 'の前に現れるすべてのものを取り除き、末尾のスペースを削除してからexiftoolを使ってPDFメタデータの著者として追加します。

for i in "*.pdf"; 
    do exiftool -author=$(echo $i | sed 's/-.*//' | sed 's/[ \t]*$//') "$i"; 
    done 

しかし、それを実行しようとすると、以下返されます:-author =フレーズがここに破壊され

Error: File not found - Z. 
    Error: File not found - Bar 
    Error: File not found - *.pdf 
     0 image files updated 
     3 files weren't updated due to errors 

何について

は、これまでのところ私は、次がありますか?誰かが私を啓発できますか?

+0

シェルが '*' charを展開していないことがわかったときは、 '* .pdf'の周りにあるdbl-quotesを削除したいことを示します。また、以下の回答はとても便利です。優れた最初のQは投稿しておいてください。しかし、http://stackoverflow.com/help/how-to-ask、http://stackoverflow.com/help/dont-ask、http://stackoverflow.com/をお読みください。 help/mcveをクリックして[ツアー](http://stackoverflow.com/tour)にアクセスしてください。がんばろう。 – shellter

+0

ありがとう、私はそうすることを確認します – NonSatiata

答えて

2

このスクリプトを書く必要はありません。実際には、exiftoolにすべてのファイルを一度起動させる必要があるため、exiftoolを単独で実行させるよりもはるかに時間がかかります。
-ext pdfプロセスのみのPDFファイル
-author別のタグオプションから
<にコピーをコピーするタグ:

この
exiftool -ext pdf '-author<${filename;s/\s+-.*//}' /path/to/target/directory

内訳を試してみてください。この場合、ファイル名は擬似タグとして扱われます
${filename;s/\s+-.*//}ファイル名からコピーしますが、最初に正規表現を実行します。この場合、1つ以上のスペース、ダッシュ、および残りの名前を探して削除します。

サブディレクトリに再帰する場合は、-rを追加します。ファイル名に_originalというバックアップファイルを作成しないようにするには、-overwrite_originalを追加します。

最初のコマンドのエラーは、割り当てたい値にスペースが含まれていて、引用符で囲む必要があることでした。

+0

ありがとうStarGeek、これはpefectly動作します! – NonSatiata