
たくさんのファイルを含む大きなディレクトリツリーがあります。
新しい場所にディレクトリ構造を再作成したいのですが、ファイルではなくディレクトリのみです。
のマニュアルページを確認しましたcp
が、役立つ引数は見つかりませんでした。
答え1
rsync -av -f"+ */" -f"- *" /.../SOURCE /.../DESTINATION
答え2
find . -type d -exec mkdir -p ~/to/{} \;
この質問に対する @whitequark の回答から引用:Mac OS Xでファイルをコピーせずにディレクトリ構造をコピーする
答え3
もう一つのアプローチは、非常に便利な を使用しtree
、強力なオプションに基づいてディレクトリツリーをナビゲートすることです。ディレクトリのみ、空のディレクトリを除外、パターンを含む名前を除外、パターンを含む名前のみを含めるなどのオプションがあります。man tree
アドバンテージ: リストを編集または確認したり、スクリプトを大量に作成して空のディレクトリを頻繁に作成したりすることができます。
アプローチ: を使用してディレクトリのリストを作成しtree
、そのリストを引数入力として使用します。mkdir
tree -dfi --noreport > some_dir_file.txt
-dfi
ディレクトリのみをリストし、それぞれの名前のフルパスを出力し、ツリーにインデント行を出力しないようにします。
--noreport
出力ファイルに無駄な情報が含まれないように、ツリーリストの最後にファイルとディレクトリのレポートを印刷しません。
次に、空のディレクトリが必要な場所に移動し、実行します。
xargs mkdir < some_dir_file.txt
答え4
同様のニーズに遭遇したので、これを見つけました。rsync の十分に新しいバージョンでは、これが最善の策です。
rsync の最新バージョンをお持ちでない場合は、次の方法で解決できます:
find path/to/source -type -d -exec mkdir path/to/dest/'{}' \; -exec chown --reference='{}' path/to/dest/'{}' \; -exec chmod --reference='{}' path/to/dest/'{}' \;
(このバリエーションは権限のミラーリングに使用できます)