2017-11-20 11 views
3

「子」という名前のサブディレクトリを見つけて、それらのフォルダ内のファイルを新しいディレクトリにコピーする必要があります。それを働かせることはできません。名前でフォルダを見つけてからファイルをコピーする

私はサブディレクトリを見つけることができますが、それらからファイルをコピーすることはできません。

> find /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016 -type d -iname child 

上記の「子」という名前03_2016内のすべてのサブディレクトリを検索しますが、どのように私は今、これらのディレクトリ内のファイルをコピーしますか?

私はこれを試してみましたが、問題は、ディレクトリそのものだけでなく、ファイルをコピーするように見えるということです。

> find /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016 -type d -iname child | xargs cp '{}' /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/TEST \; 

私はそれがファイルのみをターゲットに取得することはできません。

答えて

1

あなたは近いです:

> find $YOUR_PATH/03_2016/ -type d -iname child | xargs -I {} find -type f {} | xargs -I {} cp {} /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/TEST 

注:これは、上記の回答より少しきれいかもしれない最終目的地で

+0

ああ、どこに行くのか分かります。 '-bash:/ Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016:is is a directory 'というエラーが表示され、ターゲットを参照しています。なぜそれが不平を言うのかわからない、もちろんそれはディレクトリだ。 –

+0

2番目のfindが '-type f'であることを確認してください – CMPS

1

を同じ名前を共有するファイルが上書きされる可能性があります:

find $(find /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016 -type d -iname child | xargs) -type f -exec cp {} /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/TEST \; 

xargsを1回呼び出す呼び出しを2回呼び出します。他の答えと同様に、これは重複するファイル名も上書きします。

+0

これは動作します、ありがとう!私は何が起こったのかを見ると、コモンリポートは最後に-1を持ってはいけません(時には2回マウントされ、別の問題です!)。 –

関連する問題