web-dev-qa-db-ja.com

空のディレクトリなしでディレクトリツリーをコピーしますか?

次の木があります

# upper letters = directory
# lower letters = files
A
|-- B
|-- C
    |-- D
    |-- e <= file
|-- F
    |-- G

空のディレクトリをすべて無視して、このツリーを別の宛先にコピーする必要があります。したがって、宛先は次のようになります。

C
|-- e

Unix、rsyncなどでこれをどのように行いますか?

20
Dane O'Connor

もちろん数分後、私は簡単な方法を発見しました。 rsyncには--Prune-empty-dirsオプション。

31
Dane O'Connor

この問題にはさまざまな解決策があります( この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

1
VL-80