ファイルのコピーは実行せず、ディレクトリのみを、構造を保ったままコピーする方法。
あるあるネタ1なのだが、GNU coreutils の cp なら、find xargs やら rsync やら使わずに簡単にできる。
$ mkdir -p foo/bar/buz
$ touch foo/bar/file1
$ cd foo && tree # 本物の tree じゃないよ
/PATH/TO/foo/
+--bar/
+--buz/
+--file1
cp -sr
foo を hoge としてディレクトリのみコピーしたい場合。
cp -sr で、コピー元を相対パス記載してコピーする。
$ cp -sr foo hoge
# STDERR は気にしない
$ cd hoge && tree
/PATH/TO/hoge/
+--bar/
+--buz/
ま、-s がコケるのを見越した、お行儀の悪いやりかたなんだけど。
cp -sr 本来の使い方
で、
コピー元をフルパスで実施すると、ファイルのシンボリックリンクが出来る2。
$ cp -sr /PATH/TO/foo hoge2
$ cd hoge2 && tree
/PATH/TO/hoge2/
+--bar/
+--buz/
+--file1
一気に再帰的にシンボリックリンクが作成できるので、深い階層に鎮座するデータを手元に構成したいときには便利。