また、長いリストファイルを新しい場所に移動します。

また、長いリストファイルを新しい場所に移動します。

私は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部分は最初に試してみるのが良いのでコメントしました。

おすすめ記事