フォルダをコピーするときに特定の入れ子になったフォルダを省略する

フォルダをコピーするときに特定の入れ子になったフォルダを省略する

次のコマンドを使用して、変更時間などのファイルメタデータを保存しながら、入れ子になったフォルダを再帰的にcpコピーする方法を知っています。-r-p

cp -pr "/path/from" "path/to"

名前で最初のレベルの深さに入れ子になった特定のフォルダを省略する方法はありますか?

たとえば、Photos名前付きフォルダがコピーされています。入れ子になったフォルダをスキップしたいですDogs/Photos/Dogsフォルダとその内容を除くすべてが欲しいです。

コピーしてから削除できると思いました。しかし、これは非効率的です。そもそもフォルダのコピーを防ぐ方法はありますか?

私は現在macOS Mojaveを使用しており、後でFreeBSD 12を使用する予定です。

ベストアンサー1

はい、1つ以上のサブディレクトリをコピーせずにファイル構造をかなり簡単にコピーできますがcp

パスすると、rsync除外パターンを使用してファイルおよび/またはディレクトリを除外できます。あなたの場合は、以下を使用したいと思います。

rsync -av --exclude='Photos/Dogs/' /path/from/ path/to

これにより、パスが一致するディレクトリを呼び出さずにpath/to正確なコピーが作成されます。ソースディレクトリの末尾を削除すると、ソースフォルダの正確なコピーが得られます。/path/fromDogsPhotos/Dogs/path/to/from

使用される除外パターンは、などの名前付きディレクトリ内の名前付きrsyncすべてのサブディレクトリを無視します。 usingは、親ディレクトリが何であるかにかかわらず、呼び出されたすべての子ディレクトリを除き、usingはファイルタイプに関係なく呼び出されたすべてのエントリを除外します。ディレクトリのみ一致DogsPhotos/path/from/Photos/Dogs/path/from/holidays/2013/Photos/Dogs--exclude=Dogs/Dogs--exclude=DogsDogsPhotos/Dogsまっすぐ次に。/path/from--exclude='/Photos/Dogs/'

rsyncシステムマニュアルの「パターンルールの埋め込み/除外」を参照してください。

-a()オプションを使用する--archiveと、タイムスタンプ、権限などもコピーされ、再帰コピーも有効になります。-v( )オプションを選択すると--verbose詳細な操作が可能です。

名前間のハードリンクを維持するには-H()を追加します(マニュアルをもう一度参照)。--hard-linksrsync

おすすめ記事