次のコマンドを使用して、変更時間などのファイルメタデータを保存しながら、入れ子になったフォルダを再帰的に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/from
Dogs
Photos/Dogs
/
path/to/from
使用される除外パターンは、などの名前付きディレクトリ内の名前付きrsync
すべてのサブディレクトリを無視します。 usingは、親ディレクトリが何であるかにかかわらず、呼び出されたすべての子ディレクトリを除き、usingはファイルタイプに関係なく呼び出されたすべてのエントリを除外します。ディレクトリのみ一致Dogs
Photos
/path/from/Photos/Dogs
/path/from/holidays/2013/Photos/Dogs
--exclude=Dogs/
Dogs
--exclude=Dogs
Dogs
Photos/Dogs
まっすぐ次に。/path/from
--exclude='/Photos/Dogs/'
rsync
システムマニュアルの「パターンルールの埋め込み/除外」を参照してください。
-a
()オプションを使用する--archive
と、タイムスタンプ、権限などもコピーされ、再帰コピーも有効になります。-v
( )オプションを選択すると--verbose
詳細な操作が可能です。
名前間のハードリンクを維持するには-H
()を追加します(マニュアルをもう一度参照)。--hard-links
rsync