再帰的にシンボリックリンクを作成し、1.JPGファイルが存在する場合は、1A.JPGに名前を変更します。

再帰的にシンボリックリンクを作成し、1.JPGファイルが存在する場合は、1A.JPGに名前を変更します。

私は1年間、すべての写真のシンボリックリンクを生成するシェルスクリプトを持っています。写真は他のカメラからインポートされ、サブディレクトリにあります。

f=$(pwd);
export f;
q="2015/";
z="2015_Links/";
find $q/. \( -name "*.CR2" -o -name "*.JPG" \) -execdir sh -c 'ln -s "$PWD"/$(basename {}) "$f"/"$z"/Link_$(basename {})' {} \;

一部の写真のファイル名が同じでエラーが発生します。

ln: failed to create symbolic link ‘2015_Links/Link_IMG_1588.CR2’: File exists

この場合、既存のファイルの名前を変更したいと思います。たとえばLink_IMG_1588.CR2Link_IMG_1588A.CR2

ベストアンサー1

この問題に対する別の解決策が見つかりました。

各ファイル名が一意になるように(IMG番号+日付)、他のカメラの写真名を正常に変更しました(findおよび使用)。exiv2

find 2015/. \( -name "*.CR2" -o -name "*.JPG" \) -execdir sh -c 'exiv2 -r':basename:_%Y%m%d_%H_%M_%S' rename $(basename {})' {} \;

おすすめ記事