复制给我“相同”错误

复制给我“相同”错误
find . -type f -iname "*.jpg" -exec cp {} JPG \;

我正在编写 shell 脚本,在将图像文件复制到新目录时出现错误: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]')。

相关内容