2016-04-27 5 views
1

背景バッシュスクリプト - -exec CPを見つける使用してループの場合はエラーを生成します。cp:省いディレクトリ

私は画像の2つのフォルダを持っている... FOLDER ONEは、カラー画像の何千ものメインフォルダです。 FOLDER TWOは、私がFOLDER ONEで探していたもののフィルタリングされたフォルダですが、FOLDER TWOの画像は白黒です。

特別な注意FOLDER TWO内の画像の –ファイル名は、ONE +他のいくつかのその後の情報(ただし、.JPEG拡張子の前)FOLDERの場合と同じです。

私の目標

FOLDER TWO内のファイルの名前の先頭部分の検索FOLDER ONE(私は私がフィルタリングきた画像の色のコピーを得ることができるように)、およびそれらをコピーしますPASS FOLDERという別のフォルダに画像をコピーします。

私のコード

私は入れませんノート – 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: omitting directory '/home/user/F1/'

助けてください!私はこれが非常に簡単でなければならないと思っています、それは一貫して問題を抱えています。また、forループの個々の部分を個別にテストしています。私はforループが何かを混乱させていると思うが、私は理由を見ない。

答えて

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に指示します。

+0

それでした。本当にありがとう!私はしばらく詰まっていた。 – AmericanMade

0

-rパラメータを追加するだけです。 cpの後

find /home/user/F1/ -name "$name*" -exec cp -r {} /home/user/PASSED/ \;; 
関連する問題