Linux 使用find-exec cp的Bash脚本For循环产生错误:cp:忽略目录

Linux 使用find-exec cp的Bash脚本For循环产生错误:cp:忽略目录,linux,bash,for-loop,copy,find,Linux,Bash,For Loop,Copy,Find,背景 我有两个文件夹的图像。。。文件夹1是包含数千张彩色图像的主文件夹。文件夹2是一个经过过滤的文件夹,其中包含我一直在文件夹1中查找的内容,但文件夹2中的图像是黑白的 特别注意–文件夹2中图像的文件名与文件夹1中的文件名相同+之后的一些其他信息(但在.jpeg扩展名之前) 我的目标 在文件夹1中搜索文件夹2中文件名的开头部分(这样我就可以得到我过滤过的图像的彩色副本),然后将这些图像复制到另一个名为PASS FOLDER的文件夹中 我的代码 注–文件夹1、2、通过文件夹=F1、F2、通过(分别

背景

我有两个文件夹的图像。。。文件夹1是包含数千张彩色图像的主文件夹。文件夹2是一个经过过滤的文件夹,其中包含我一直在文件夹1中查找的内容,但文件夹2中的图像是黑白的

特别注意–文件夹2中图像的文件名与文件夹1中的文件名相同+之后的一些其他信息(但在.jpeg扩展名之前)

我的目标

在文件夹1中搜索文件夹2中文件名的开头部分(这样我就可以得到我过滤过的图像的彩色副本),然后将这些图像复制到另一个名为PASS FOLDER的文件夹中

我的代码

注–文件夹1、2、通过文件夹=F1、F2、通过(分别)

我的问题

我一直在犯错误

cp:省略目录“/home/user/F1/”


请帮忙!我认为这应该很简单,只是一直有问题。我还单独测试了for循环的每个部分,它们都可以工作。我认为for循环弄乱了一些东西,但我不明白为什么。

问题是
find
正在处理
cp
目录进行复制,而您只想复制文件。因此,替换:

find /home/user/F1/ -name "$name*" -exec cp {} /home/user/PASSED/ \;
与:


Thw谓词
-type f
告诉
find
只匹配常规文件,而不匹配目录

只需添加-r参数。cp之后

find /home/user/F1/ -name "$name*" -exec cp -r {} /home/user/PASSED/ \;;

就这样!非常感谢!我被困了一段时间。
find /home/user/F1/ -type f -name "$name*" -exec cp {} /home/user/PASSED/ \;
find /home/user/F1/ -name "$name*" -exec cp -r {} /home/user/PASSED/ \;;