写真コレクションでpyrenamer
を使用していますが、1つの問題を除いて非常にうまく機能します。最後に3桁の数字を付けて、撮影した日付のメタデータに基づいて写真の名前を変更する必要があります。ライブラリ内の各フォルダーは1日を表し、各フォルダーの001から始まる001〜999の数字で終わる写真が必要です。ファイル名の例は2016-01-31-001.jpgです。
Shotwellは、オプションで%Y/%m/%d
構造を使用してインポート時にディレクトリ構造を作成しますが、〜/ Picturesディレクトリでpyrenamerを再帰的に使用すると、期待される結果が表示されません。日付ごとに名前を変更しますが、新しいフォルダーごとに001から開始するのではなく、フォルダー全体で増分し続けます。これについてもっと簡単な方法はありますか?
メタデータ変数をさらに追加し、時間、分、および秒に応じて名前を変更できることは知っていますが、これによりファイル名が必要以上に長くなります。私のカメラは毎秒複数のショットを撮ることもできるため、名前の変更には問題があります。
これを行う最も簡単な方法は何ですか?私はピレナマーの使用が好きですが、bashスクリプトも問題ありません。
Pictures/
├── Folder 1/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
├── Folder 2/
│ ├── YY-MM-DD-003.jpg
│ └── YY-MM-DD-004.jpg
...
Pictures/
├── Folder 1/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
├── Folder 2/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
...
JPEG写真の画像ライブラリ全体の名前をYYYY-MM-DD-XXX.jpg形式に変更し、毎日-001からカウントアップする、exiftool
でこのコマンドを使用します。
exiftool -fileOrder DateTimeOriginal -recurse -extension jpg -extension jpeg -ignoreMinorErrors '-FileName<CreateDate' -d %Y-%m-%d%%-.3nc.%%e ~/Pictures/
コマンドを完全に説明するために、次のように機能します。
exiftool
はスクリプトを開始します。-fileOrder DateTimeOriginal
は、exiftoolにと同じ順序で画像を処理するように強制します。これは、元の日付順に1日以内に画像番号を保持するために重要です。-recurse
は、サブディレクトリを再帰的に処理します。これは、写真が日付順に整理されたディレクトリに配置されるため、Shotwellを使用してインポートする場合に役立ちます。-extension jpg -extension jpeg
は、JPEGファイルのみが処理されるようにします。 (これらはケース固有ではなく、jpg = JPGであるため、すべてをキャッチします)-ignoreMinorErrors
目的の結果に影響を与えないエラー(通常、この操作には不要な無関係のタグの読み取りの問題)を無視します。'-FileName<CreateDate'
写真の作成日をファイル名に入れます。-d %Y-%m-%d%%-.3nc.%%e
ここで-d
は、目的の出力日付形式を設定します。ハイフンで区切られた4桁の年、2桁の月と日(%Y-%m-%d
)の後に、001で始まる3桁の数字(%%-.3nc
)を使用し、元のファイル拡張子(.%%e
)。~/Pictures/
は最後のアイテムであり、exiftool
がコマンドで処理する必要があるディレクトリです。エラーに関する注意、-ignoreMinorErrors
は役立ちますが、それでもメッセージ「警告:Bad PreviewIFDディレクトリ」が表示される場合があります 無視しても安全です または "警告:/path/to/problem/image.jpgから書き込み可能なタグが設定されていません"。 2番目は解決できませんでしたが、いくつかの画像でしか見られなかったため、回避策としてNautilusで手動で名前を変更しました。
このコマンドはまだ改善される可能性がありますが、テストされ、大規模(40GB、13000画像)の写真ライブラリで動作し、高速でエラーが発生せず、最新のカメラのほとんどが作成するタグが欠落しているときどき画像の名前を変更できません。