背景
我有两个图像文件夹... FOLDER ONE是包含数千个彩色图像的主文件夹。 FOLDER TWO是一个过滤的文件夹,我一直在寻找FOLDER ONE,但FOLDER TWO中的图像是黑白的。
特别提示 - FOLDER TWO中图像的文件名与FOLDER ONE +之后的其他信息相同(但在.jpeg扩展名之前)。
我的目标
在FOLDER ONE中搜索FOLDER ONE以获取文件名称的开头部分(以便我可以获取已过滤的图像的彩色副本),然后将这些图像复制到另一个名为PASS FOLDER的文件夹中。 / p>
我的代码
note - FOLDER ONE,TWO,PASS FOLDER = F1,F2,PASSED(分别)
for doc in F2/*
do
name=`basename $doc`;
name=${name%-*};
find /home/user/F1/ -name "$name*" -exec cp {} /home/user/PASSED/ \;;
done
我的问题
我一直收到错误
cp:省略目录'/ home / user / F1 /'
请帮忙!我认为这应该是非常简单的,它只是一直有问题。我还自己测试了for循环的每个部分,它们都有效。我认为for循环搞砸了,但我不明白为什么。
答案 0 :(得分:1)
问题是find
正在处理cp
目录以进行复制,而您只想复制文件。因此,替换:
find /home/user/F1/ -name "$name*" -exec cp {} /home/user/PASSED/ \;
使用:
find /home/user/F1/ -type f -name "$name*" -exec cp {} /home/user/PASSED/ \;
Thw谓词-type f
告诉find
仅匹配常规文件,而不是目录。
答案 1 :(得分:0)
只需添加-r参数。在cp之后
find /home/user/F1/ -name "$name*" -exec cp -r {} /home/user/PASSED/ \;;