私はExifToolという素晴らしいプログラムを使って、多数のファイル名を再帰的に変更します。
使用例は次のとおりです。
$ exiftool -r -ext JPG '-FileName<CreateDate' -d %Y%m%d_%H%M%S.jpg .
Error: './folder1/110310_135433.jpg' already exists - ./folder1/source.jpg
Warning: No writable tags found - ./folder2/110404_095111.jpg
68 directories scanned
1650 image files updated
5 image files unchanged
2 files weren't updated due to errors
非常に大きな画像バッチで作業している場合、エラーによって更新されないファイルの数が数百に達することが多いため、各ファイルを個別に移動することはできませんmv
。
さらなる処理のために、エラー/警告を含むファイルを別のディレクトリに同時に移動したいと思います。
端末出力から問題ファイルのパスを抽出して一緒に移動する必要がありますが、どうすればよいかわかりません。
どうすればいいですか?
とにかく私はUbuntu 11.10を使用しています。
答え1
これにより、エラー/警告からファイル名が抽出され、exiftool
「未処理」フォルダの下にそのファイルのみを含むディレクトリツリーのコピーが作成されます。名前は同じですが、ソースディレクトリが他のファイルを上書きするリスクを回避するために単一のディレクトリに移動しようとしました。
exiftool ... 2>&1 | tee exiftool.log | egrep '^(Error|Warning)' | \
sed 's/^Error: .* already exists - //;s/^Warning: .* - //' | \
while IFS= read -r img; do
rsync -vR -- "$img" unprocessed/
#rm -v -- "$img"
done
このsed
セクションでは、提供された例の出力のみを考慮します。ツールと可能な出力メッセージに精通していません。
編集:このrm
部分は最初に試してみるのが良いのでコメントしました。
答え2
ExifToolの解決策は、ファイル名に%c(または-dパラメータの%%c)を追加することです。これにより、重複した名前のファイルにコピー番号が追加されます。