コピーすると、「同じ」エラーが発生します。

コピーすると、「同じ」エラーが発生します。
find . -type f -iname "*.jpg" -exec cp {} JPG \;

シェルスクリプトを作成していますが、イメージファイルを新しいディレクトリにコピーするとエラーが発生します。are the same

答え1

このJPGディレクトリは現在ディレクトリにあります。再帰を使用して現在のディレクトリを検索していますfind。つまり、JPG名前が一致するすべてのファイル*.jpg(大文字と小文字を区別しない)がそのファイル自体にコピーされます。

これを防ぐには、次のようにします。

find . -path ./JPG -prune -o -type f -iname '*.jpg' -exec cp {} ./JPG \;

JPGこれにより、ディレクトリが見つかるたびに検索ツリーからそのディレクトリが削除されます(つまり、検索対象とは見なされません)。


作業速度を上げるには、GNUがある場合はcp次のようにします。

find . -path ./JPG -prune -o -type f -iname '*.jpg' -exec cp -t ./JPG {} +

これにより、cp見つかった各ファイルに対して一度ではなく、一括して見つかったJPEGファイルが呼び出されます。

同様の効果を得るには一度だけ呼び出してくださいrsync

rsync -av --exclude=/JPG --include='*.jpg' --include='*/' --exclude='*' ./ ./JPG

(に*.jpg変更しない限り、大文字と小文字を区別せず、一致しません。)--include='*.jpg'--include='*.[jJ][pP][gG]'

関連情報