次の木があります
# upper letters = directory
# lower letters = files
A
|-- B
|-- C
|-- D
|-- e <= file
|-- F
|-- G
空のディレクトリをすべて無視して、このツリーを別の宛先にコピーする必要があります。したがって、宛先は次のようになります。
C
|-- e
Unix、rsyncなどでこれをどのように行いますか?
もちろん数分後、私は簡単な方法を発見しました。 rsync
には--Prune-empty-dirs
オプション。
この問題にはさまざまな解決策があります( このWebページ から引用):
このオプションでは、mkdirコマンドとfindコマンドを使用します。この方法では、コマンドの実行中にソースフォルダー内にいる必要もあります。
bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;
検索とcpioの使用
bash$ find /path/to/source -type d | cpio -pd /path/to/dest/
Rsyncの使用
bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest
OR
bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest