サブディレクトリをあるディレクトリから別のディレクトリにコピーする


0

あるディレクトリのコンテンツを別のディレクトリにコピーする必要があります。

サブフォルダーを1つだけコピーする必要があります。

例えば; 「from」というフォルダがあり、その中のすべてのものを含む「21-01-2015」というサブフォルダの1つをコピーする場合<-この名前は毎日変更され、これを実行したいcronjobを介して、フォルダー " to "に

+ from
    - 21-01-2015 (**this name changes all the time**)
    - month (**this stays always the same**)

現在このコマンドを使用していますcp -a /path/from /path/toが、このコマンドはフォルダー「from」のコピーを、その中のすべてのものとともに実行します...

そのため、フォルダ " to " 内にいるときは、次のようになります。

+ to
    + from
        - 21-01-2015
        - month

私がそれを必要とする方法の代わりに

+ to
    - 21-01-2015

どうすればこのようなことを達成できますか?

ありがとうございました


必要なすべてのディレクトリを保持し、homeを除外するワイルドカードを使用します。可能な例:cp -a / path / from / ??-??-??? / path / to /または数字で実際にテストする場合:cp -a / path / from / [0-3] [0-9]-[0-1] [0-2]-[0-9 ] [0-9] [0-9] [0-9] / path / to /。
リンツウィンド

@KasiyAフォルダー名の日付と同じ日付のcronjobを実行しません
-user4480106

1
あなたはstackoverflowでこの質問の複製を求めました。ここでもう一度尋ねるのはなぜですか?stackoverflowで「承認済み」とマークした答えは適切ではありませんでしたか?
John1024

回答:


0

cp -a / path / from / * / path / toは、/ path / fromに他のファイル/ディレクトリがあり、それだけをコピーしたい場合、ディレクトリではなく、/ path / fromの内容をコピーします。それに一致するパターンを考え出す必要があります。


うん、しかし、私が言ったように...私はcronjobを実行する必要があります...そして私がコピーする必要があるフォルダの名前は毎日変更されます。基本的に、私が必要なのは「月」以外のすべてをコピーすることです
...-user4480106

0

このコマンドを試すことができます:

cp -a from/$(ls from | grep ^[0-9][0-9]) to/

0

コマンドcp -a / path / from / path / toの問題は、ソースディレクトリ(場合によっては「/ path / from」)とその下のすべてをコピーすることを意味する再帰コピーを実行することです。

必要なのは、「from」内の「21-01-2015」ディレクトリを再帰的にコピーするコマンドです。使用するコマンドは次のとおりです。

cp -a /path/from/21-01-2015 /path/to

「from」内のディレクトリが名前を変更することに言及したことに注意してください。前のジョブのディレクトリが残っているかどうかについては言及していません。/ path / fromに複数のサブディレクトリが含まれており、コマンドでワイルドカードを使用する場合は、すでにコピーしたすべてのディレクトリをコピーします(これは必要な場合とそうでない場合があります)。以前のcronジョブで既にコピーしたサブディレクトリのコピーを気にしない場合は、次のコマンドを使用して、数字で始まるファイルまたはフォルダーをコピーできます(もちろん、「月」はコピーされません)

cp -a /path/from/[0-9]* /path/to

cronjobが実行されるたびに「from」のすべてのサブディレクトリをコピーしたくない場合(つまり、最後のcronjob以降に追加されたファイルをコピーしたい場合)、rsyncを使用する方が適切です。使用するrsyncコマンドは次のようになります。

rsync -avz --exclude 'month' /path/from/ /path/to/

しかし、正確なオプションについては、manページをチェックして、必要なことを正確に実行してください(たとえば、実稼働環境で詳細を表示したくない場合があります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.